有没有办法在WPF中的选项卡项之间共享相同的数据网格?

时间:2013-10-10 14:28:08

标签: wpf

两个标签项是否有任何方式在wpf中共享数据网格。 例如:

<TabControl x:Name="tbMain">
<TabItem x:Name="tab1" />
<TabItem x:Name="tab2" />
</TabControl>

所以我的意思是,tab1和tab2可以有相同的数据网格,只是值不同吗?

3 个答案:

答案 0 :(得分:2)

TabItemContentControl,您不能同时在两个容器中拥有相同的控件。

但是你可以坚持使用空的TabItems和DataGrid以及TabControl之外的DataSource。通过边框的一些样式,您可以使它看起来像DataGrid是同一控件的一部分。然后,您可以根据SelectedItem的当前TabControl更改网格的{{1}}。

答案 1 :(得分:0)

我不知道你为什么要这样,同时在WPF same control cannot be child of different parent。但是,如果您只想定义DataGrid一次并使用它,则可以通过为ContentTemplate定义TabControl来实现:

<DataTemplate x:Key="contentTemplate">
  <Grid>
    <DataGrid ItemsSource="{Binding MyItemsSource}"/>
  </Grid>
</DataTemplate>

<TabControl Width="250" Height="300" 
            ContentTemplate="{StaticResource contentTemplate}">

此处DataTemplate“contentTemplate”将应用于未定义ContentTemplate的任何TabItem

此处需要记住的是,应设置TabItem Content,并且内容应包含应作为ItemsSource的{​​{1}}的Collection属性。

答案 2 :(得分:0)

不,你不能在2个容器中拥有相同的控件,但为什么不简单地将2个控件绑定到同一个数据源?然后在您的viewmodel中,当前所选项目发生更改时,等等...将镜像反映到另一个控件。