3

有没有办法在 DataGrid 中为每行设置一个 StaticResource,从所有列访问它?


更新
我的目标是拥有 3 个 ComboBox 列,而实际上只有最后一个绑定到行项目。
例如,DataGrid 表示项目列表。我有Category->Vendor->Style->Finish ComboBoxes,但这些仅用于导航辅助,实际上,Item 类只有“Finish”关系。因此,如果每行有一个 StaticResource,我可以设置 ComboBox 的 ItemsSource 和 IsSynchronizedWithCurrentItem 道具,这将自动工作。

非常感谢。

4

4 回答 4

1

从技术上讲,我猜你可以,因为该行在可视树中。但是你想达到什么目的?可能有更好的方法。

于 2010-04-22T05:16:45.880 回答
0

您能否详细说明您要实现的目标?

我认为拥有一个代表 Collection 的 staticResource(请参阅 ObjectDataProvider 类型)然后在 XAML 中将 DataGrid 的 ItemSource 属性绑定到它会更简单。

于 2010-04-22T05:16:43.240 回答
0

您当然可以像这样在 DataGrid 级别设置它:

xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"

<data:DataGrid x:Name="..."  ItemsSource="{Binding ...}" >
    <data:DataGrid.Resources>
    </data:DataGrid.Resources>
</data:DataGrid>

如果您定义行模板,我会假设您可以在行级别设置它?

于 2010-04-22T05:30:37.777 回答
0

我做了什么并解决了我的问题(不保证这是否是正确的方法),我使用 UserControl 作为 DataTemplate 内容,在 UserControl 中声明了资源,然后每次都对其进行初始化。

我没有尝试过的另一件事是将x:Shared属性设置为false,我认为这应该有助于解决这个问题。

于 2011-01-16T03:17:06.553 回答