Pass XAML object within XAML
背景:
我有一个完全在
我的 xaml 文件如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <RootConfiguration xmlns="clr-namespace:Configuration;assembly=Configuration" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <RootConfiguration.Elements> <ElementList x:Name="completeElementDefinition"> <Element Type="X" Show="True" Refresh="30"> <Element.Name>A1</Element.Name> </Element> <Element Type="Y" Show="True" Refresh="30"> <Element.Name>B1</Element.Name> </Element> </ElementList> </RootConfiguration.Elements> <RootConfiguration.ElementGroups> <ElementGroupList> <ElementGroup Name="All Elements"> <ElementGroup.Elements> <!-- How to reference the ElementList"completeElementDefinition" defined above --> </ElementGroup.Elements> </ElementGroup> <ElementGroup Name="Type X Elements"> <ElementGroup.Elements> <ElementList> <!-- How to reference single Elements from the list"completeElementDefinition" --> </ElementList> </ElementGroup.Elements> </ElementGroup> <ElementGroup Name="Type Y Elements"> <ElementGroup.Elements> <ElementList> <!-- How to reference single Elements from the list"completeElementDefinition" --> </ElementList> </ElementGroup.Elements> </ElementGroup> </ElementGroupList> </RootConfiguration.ElementGroups> </RootConfiguration> |
我首先尝试在一个额外的命名空间中实现第二个
我读过
而且我认为可以实现
我怎样才能意识到我在寻找什么?有没有比我能找到的更好的方法来引用我的 xaml 标记中的对象?
我只见树木不见森林......由于一些研究工作,我可以自己解决我的问题。
解决方案在于结合我上面提到的两种方法。
我将属性
中定义的元素
1 2 3 4 5 6 7 8 9 10 11 12 | #region Dependancy Property // Dependency Property public static readonly DependencyProperty ElementsProperty = DependencyProperty.Register("Elements", typeof(ElementList), typeof(ElementGroup), new PropertyMetadata(null)); // .NET Property wrapper public ElementList Elements { get { return (ElementList )GetValue(ElementsProperty ); } set { SetValue(ElementsProperty , value); } } #endregion |
现在我可以参考 XAML 标记中的元素,如下所示:
1 2 3 4 5 6 | <RootConfiguration.ElementGroups> <ElementGroupList> <ElementsGroup Name="All Elements" Elements="{x:Reference completeElementDefinition}" /> <!-- [...] --> </ElementGroupList> </RootConfiguration.ElementGroups> |