2014-01-14 36 views
0

是否可以聲明XAML片段並在同一文檔中重新使用它?我有兩個應該有相同的列定義Telerik的RadGridView控制,我想只需要一次聲明它們:是否可以重用XAML文檔中的元素?

   <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是我希望的答案的佔位符,所以是標識在列。 我敢肯定,這是可能的使用XML的標準,但我找不到它是什麼。

回答

0

簡短的回答是肯定的,這是可能的,但較長的答案是,它會更多的麻煩比它的價值。那麼,這取決於你想在哪裏顯示這些列。例如,您可以在DataTemplate中爲特定類型的數據定義它們,然後在顯示該類型實例的任何位置,UI將按照您的定義呈現每個項目。

但是,我認爲這是而不是你想要什麼。還有其他的方法可以做到這一點,但我懷疑最接近你想要的是讓你在UserControl中定義你的UI,就像@dkozl建議的那樣。

基本思想是這樣的...在UserControl裏定義你的'可重用'UI元素。從UI控件添加一個或多個DependencyProperty s到您的UserControl,然後數據綁定到屬性或屬性的屬性:

例如,在UserControl,創建Address類型的DependencyProperty並命名Address。從UserControl內,使用RelativeSource FindAncestor Binding s到這個屬性連接:

<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}" /> 

任何你想要重複使用你的代碼的地方,只需添加上面這些行中的另一個。

相關問題