WPF UserControls具有不同的内部datagrid ItemSource属性

时间:2013-03-21 15:55:55

标签: c# wpf

我有三个名为UC的UserControl。它们都是相同的,只是它们在布局中使用的DataGrid需要为每个DataGrid使用不同的DynamicResource。基本上:

<DataGrid ...
 ItemsSource="{DynamicResource Model1}"> <!-- I want to pass in this "Model1" string? -->

...
</DataGrid>

<DataGrid ...
 ItemsSource="{DynamicResource Model2}">

...
</DataGrid>

<DataGrid ...
 ItemsSource="{DynamicResource Model3}">

...
</DataGrid>

我的所有用户控件都是在Window中创建的:

<Window ...>

<my:UC/>
<my:UC/>
<my:UC/>

</Window>

截至目前,我的三个UC在数据网格中显示相同的数据导致动态资源在所有三个中都相同,如何将值传递给每个用户控件以更改其中的动态资源?或者我应该如何处理这一天我开始在WPF工作。

由于

1 个答案:

答案 0 :(得分:1)

在用户控件中创建一个依赖项属性,该属性将保存ItemsSource值(DependencyProperty.Register)。在您的控件中绑定DataGrid到此属性。然后在动态资源窗口中设置此属性:

<Window ...>
    <my:UC DataGridItemsSource="{DynamicResource Model1}" />
    <my:UC DataGridItemsSource="{DynamicResource Model2}" />
    <my:UC DataGridItemsSource="{DynamicResource Model3}" />
</Window>

要在您的控件中绑定DataGrid.ItemsSource,您可以使用ElementName=parentName绑定或RelativeSource=FindAncestor绑定