0
這是存儲在資源文件中的我現有的「Xaml字符串」模板。如何將「xaml字符串」模板轉換爲可編譯的xaml /控件
<telerik:GridViewDataColumn
DataMemberBinding="{Binding <<PropertyName>>}"
IsReadOnlyBinding="{Binding Is<<PropertyName>>ReadOnly}">
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<StackPanel >
<!--some more markup with similar bindings here-->
</StackPanel >
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
在後面的代碼中,我使用XamlReader爲列創建標記,後者將其添加到Grid。
var xamlTemplate = Properties.Resources.GridColumnTemplate.Replace("<<PropertyName>>", "MyProperty");
var col = (GridViewDataColumn)XamlReader.Load(xamlTemplate);
detailsGrid.Columns.Add(col);
現在,我需要用可編譯的Xaml/Control代替它。 有沒有辦法做到這一點?
我曾想過廣泛使用轉換器並綁定到MyProperty的Context,但這聽起來不是一個好的解決方案。
我相信你可以把這個XAML放到一個控件中,並刪除綁定,然後爲每一列創建一個新的實例並以編程方式添加綁定。雖然這並不是很乾淨,但更簡潔的方法是使這個更獨立,像用戶控件一樣擁有自己的依賴屬性,您可以在內部引用該屬性,然後以聲明方式連接(或以編程方式進行連接,就像您在做的那樣)。 –
謝謝。我已經嘗試創建一個具有依賴項屬性的控件,但不知道如何去即時創建依賴項屬性..例如:我有一個屬性集合:「MyProperty1」,「MyProperty2」.. 我當前的代碼將爲每個綁定生成2列,我如何實現與用戶控件一樣的功能? – bit
您不需要在運行中創建任何依賴屬性 - 基本上,您將從telerik GridViewDataColumn派生出一個新類,然後創建這些類的實例以添加到網格中。我正在考慮將它創建爲一個控件(使用它自己的XAML和代碼隱藏)來保存兩個新的依賴屬性,稱爲DataMember和IsReadOnly,這使得在創建它的實例時可以更容易地進行設置到您的網格,但實際上只是抽象了XAML在控制範圍內的複雜性。 –