有什么方法可以让两个选项卡项在 wpf 中共享一个数据网格。例如:
<TabControl x:Name="tbMain">
<TabItem x:Name="tab1" />
<TabItem x:Name="tab2" />
</TabControl>
所以我的意思是,tab1 和 tab2 可以有相同的数据网格,只是值不同吗?
有什么方法可以让两个选项卡项在 wpf 中共享一个数据网格。例如:
<TabControl x:Name="tbMain">
<TabItem x:Name="tab1" />
<TabItem x:Name="tab2" />
</TabControl>
所以我的意思是,tab1 和 tab2 可以有相同的数据网格,只是值不同吗?
TabItem
是 a ContentControl
,您不能同时在两个容器中拥有相同的控件。
但是,您可以坚持使用空的 TabItemsDataGrid
以及TabControl
. 通过对边框进行一些样式设置,您可以使它看起来像 DataGrid 是同一控件的一部分。然后,您可以DataSource
根据当前SelectedItem
的TabControl
.
我不知道你为什么想要那个,same control cannot be child of different parent
同时在 WPF 中。但是,如果您只想定义DataGrid
一次并使用它,您可以通过ContentTemplate
为您的TabControl
喜欢定义 a 来实现:
<DataTemplate x:Key="contentTemplate">
<Grid>
<DataGrid ItemsSource="{Binding MyItemsSource}"/>
</Grid>
</DataTemplate>
<TabControl Width="250" Height="300"
ContentTemplate="{StaticResource contentTemplate}">
此处DataTemplate
“contentTemplate”将应用于任何TabItem
未定义 ContentTemplate 的内容。
这里要记住的是TabItem
Content
应该设置并且 Content 应该包含 Collection 属性,该属性应该作为ItemsSource
您的DataGrid
.
不,您不能在 2 个容器中拥有相同的控件,但为什么不简单地将 2 个控件绑定到同一个数据源呢?然后在您的视图模型中,当当前选定的项目发生变化时,等等......将其镜像到另一个控件。