Wpf 如何访问XAML中的嵌套属性?
目前,我的网格控件具有以下XAML:Wpf 如何访问XAML中的嵌套属性?,wpf,xaml,devexpress,Wpf,Xaml,Devexpress,目前,我的网格控件具有以下XAML: <dxg:GridControl x:Name="DXGrid"> <dxg:GridControl.Columns> <dxg:Column FieldName="Field 1" Width="100"/> <dxg:Column FieldName="Field 2" Width="100"/> <dxg:Column FieldName="Field 3"
<dxg:GridControl x:Name="DXGrid">
<dxg:GridControl.Columns>
<dxg:Column FieldName="Field 1" Width="100"/>
<dxg:Column FieldName="Field 2" Width="100"/>
<dxg:Column FieldName="Field 3" Width="100"/>
</dxg:GridControl.Columns>
<dxg:GridControl>
我想将网格移动到UserControl,如下所示:
<UserControl>
<Grid>
<dxg:GridControl x:Name="DXGrid"/>
</Grid>
</UserControl>
最后,我希望实现以下目标:
<Window>
<Grid>
<local:MyUserControl>
<local:MyUserControl.DXGrid.Columns>
<dxg:Column FieldName="Field 1" Width="100"/>
<dxg:Column FieldName="Field 2" Width="100"/>
<dxg:Column FieldName="Field 3" Width="100"/>
</local:MyUserControl.DXGrid.Columns>
</local:MyUserControl>
</Grid>
</Window>
但问题是,我得到了一个错误,指出“在MyUserControl类型中未找到附加的属性DXGrid”
如何访问DevExpress网格(嵌套在UserControl中)及其XAML中的列集合?简短回答-您不能。至少不是直接的 但是,解决这个问题的一种方法是在MyUserControl上放置一个pass-through属性,该属性只将其信息传递给嵌套控件。所以它看起来像:
public static readonly DependencyProperty ColumnsProperty =
DependencyProperty.Register("Columns", typeof(GridColumnCollection), typeof(MyUserControl));
public GridColumnCollection Columns
{
get { return (GridColumnCollection)GetValue(ColumnsProperty); }
set { SetValue(ColumnsProperty, value); }
}
然后在构造函数中,将属性设置为内部列集合:
public MyUserControl()
{
InitializeComponent();
Columns = DXGrid.Columns;
}
现在设置了新属性后,您的XAML将如下所示:
<local:MyUserControl>
<local:MyUserControl.Columns>
<dxg:Column FieldName="Field1" Width="100"/>
<dxg:Column FieldName="Field2" Width="100"/>
<dxg:Column FieldName="Field3" Width="100"/>
</local:MyUserControl.Columns>
</local:MyUserControl>
我不熟悉DevEx,所以我猜测了GridColumnCollection的名称。只要使用DXGrid上Columns属性的任何类型即可。Woww,这看起来是一种更简单的方法!谢谢你,菲尔!我收到了MSFT的回复,他们把问题弄得比你的复杂。我会试试你的方法:)这里是链接到MSFT的答案: