2

我有三个名为 UC 的用户控件。除了它们在布局中使用的 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。

谢谢

4

1 回答 1

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

于 2013-03-21T16:04:42.303 回答