我有三个名为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工作。
由于
答案 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
绑定