是否可以声明XAML片段并在同一文档中重复使用?我有两个Telerik RadGridView控件应该有相同的列定义,我只想声明它们一次:
<telerik:RadGridView Name="FirstGrid">
<telerik:RadGridView.Columns Id="TheColumns">
<telerik:GridViewToggleRowDetailsColumn Width="20"/>
<telerik:GridViewDataColumn IsReadOnly="True" Header="Id" DataMemberBinding="{Binding Id}" Width="30"/>
...
</telerik:RadGridView.Columns>
</telerik:RadGridView>
<telerik:RadGridView Name="SecondGrid">
<InsertCrossReferenceHere Id="TheColumns">
显然,InsertCorssRefenceHere是我希望得到的答案的占位符,列中的Id也是如此。 我确信这可以使用XML标准的东西,但我找不到它是什么。
答案 0 :(得分:0)
简短的回答是肯定的,这是可能的,但更长的答案是可能比它的价值更麻烦。嗯,这取决于你想要显示这些列的位置。例如,您可以在DataTemplate
内为特定类型的数据定义它们,然后在显示该类型实例的任何位置,UI将按照您的定义呈现每个项目。
但是,我认为这是不你想要的。还有其他方法可以做到这一点,但我怀疑你想要的最接近的是你在UserControl
中定义你的用户界面@dkozl建议。
基本思路是......在UserControl
中定义“可重复使用”的UI元素。将一个或多个DependencyProperty
添加到UserControl
,然后将数据从UI控件绑定到属性或属性的属性:
例如,在UserControl
中,创建DependencyProperty
类型Address
并命名为Address
。从UserControl
内部,使用RelativeSource FindAncestor Binding
来连接此属性:
<TextBlock Text="{Binding Street, RelativeSource={RelativeSource
AncestorType={x:Type YourXmlNamespacePrefix:YourUserControl}}}" />
...
<TextBlock Text="{Binding PostCode, RelativeSource={RelativeSource
AncestorType={x:Type YourXmlNamespacePrefix:YourUserControl}}}" />
然后,在父视图模型中使用名为Address
的属性,您可以从外部将数据绑定到UserControl
,如下所示:
<YourXmlNamespacePrefix:YourUserControl Address="{Binding Address}" />
您想要重复使用代码的任何地方,只需在上面添加另一行。