首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TabItem的content控件的绑定

TabItem的content控件的绑定
EN

Stack Overflow用户
提问于 2010-11-17 23:52:05
回答 2查看 6.5K关注 0票数 0

我有一个TabControl,将ItemsSource设置为ObservableCollection<BookTab>,并使用ContentTemplateSelector创建不同的选项卡。

代码语言:javascript
运行
复制
class BookTab
{  
    public string Name { get; set; }  
    public string Type { get; set; }  
    public object Data { get; set; }  
}

<TabControl Name="tabControl"
            ContentTemplateSelector="{StaticResource tabTemplateSelector}">  
    <TabControl.ItemContainerStyle>  
        <Style TargetType="TabItem">  
            <Setter Property="Header" Value="{Binding Name}"/>  
            <Setter Property="Content" Value="{Binding}"/>  
        </Style>  
    </TabControl.ItemContainerStyle>  
</TabControl>

Type in BookTab确定在适当的选项卡中使用的DataTemplate,名称显示在选项卡标题上,以及应该显示在选项卡的内容中的数据,即DataGrid。数据设置为不同类型的ObservableCollections。

DataTemplate可能如下所示:

代码语言:javascript
运行
复制
<DataTemplate x:Key="bookTabTemplate">  
    <TabItem Name="bookTab">  
        <Grid>  
            <DataGrid Name="bookGrid">  
                ...  
            </DataGrid>  
        </Grid>  
    </TabItem>  
</DataTemplate>

我尝试了不同的方法将数据属性绑定到DataGrid的ItemsSource,但得到的结果都是网格显示单词"Book“(BookTab的Name属性值)。我的猜测是,我必须以某种方式将TabControl的绑定向下传播到DataGrid,但我无法弄清楚。

EN

回答 2

Stack Overflow用户

发布于 2010-11-18 00:19:03

我会这样做:

代码语言:javascript
运行
复制
<TabControl SelectedItem="{Binding CurrentBook}"
          IsSynchronizedWithCurrentItem="True"
          ItemsSource="{Binding BookList}">
<TabControl.ContentTemplate>
  <DataTemplate>
     <Grid>
        <ContentControl Content="{Binding Data}"
     </Grid>
  </DataTemplate>
</TabControl.ContentTemplate>
<TabControl.ItemTemplate>
  <DataTemplate>
    <TextBlock Text="{Binding Name}"/>
  </DataTemplate>
</TabControl.ItemTemplate>
</TabControl>

..。然后在app.xaml中定义数据内容的表示方式……

代码语言:javascript
运行
复制
    <DataTemplate DataType="{x:Type viewmodel:bookviewmodel1}">
        <view:bookview1/>
    </DataTemplate>

你所要做的就是为每种类型创建一个视图(usercontrol)。

HTH

票数 1
EN

Stack Overflow用户

发布于 2010-11-18 00:19:34

您的datagrid数据上下文可能是BookTab (您可以使用snoop进行确认)

如果这是正确的,那么您所要做的就是将datagrid itemssource绑定到BookTab数据属性

代码语言:javascript
运行
复制
<DataGrid Name="bookGrid" ItemsSource="{Binding Path=Data}" />

这应该能起到作用

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4206244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档