2010-03-02 3 views
0

извините, если я не ясно, что это не совсем ясно, в моей голове тоже (особенно после того, как пытается найти свой путь в другие должности: р)Набор для связывания компонентов DataTemplate в коде

Что я готов do создает DataGrids в коде с нулевым числом столбцов, содержащим кнопку, которая будет вызывать одну и ту же функцию, но с «параметром» (по разному для каждого столбца).

Вот что я получил до сих пор: DataGrid создан в коде DataTemplate определен в XAML ресурсов (с кнопкой) DataGridTemplateColumn который использует выше DataTemplate

Можно ли связать свойства кнопки (в DataTemplate), к свойствам DataGridTemplateColumn (в моем случае заголовок столбца будет в порядке) и как?

Есть ли способ получить доступ к компонентам DataTemplate (например, кнопки) в коде и изменить их свойства?

Возможно ли создать (и не опасно) создать DataTemplate в коде? Я объявил свое в xaml, потому что я нашел пост, советующий сделать это вместо кода.

Благодарим за помощь.

ответ

0

Chouppy

вы можете позволить XamlReader сделать работу:

oDataTemplate = TryCast(System.Windows.Markup.XamlReader.Load(New System.Xml.XmlTextReader(New System.IO.StringReader(sXaml))), DataTemplate) 

sXaml мой быть Bould, как это (в моем случае это UserControl, содержащий несколько флажков, которые связаны в DataTable полей):

Dim sDelim As String = vbNewLine 
Try 
    sXaml = "<DataTemplate " & sDelim 
    sXaml = sXaml & " xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""" & sDelim 
    sXaml = sXaml & " xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml""" & sDelim 
    sXaml = sXaml & " xmlns:local=""clr-namespace:Infor.Blending.Admin.Client;assembly=Infor.Blending.Admin.Client""" & sDelim 
    sXaml = sXaml & " xmlns:dg=""http://schemas.microsoft.com/wpf/2008/toolkit""" & sDelim 
    sXaml = sXaml & " >" & sDelim 
    sXaml = sXaml & " <local:RightEditor Tag=""Collapsed""" & sDelim 
    sXaml = sXaml & " Amend=""{Binding Path=Item.Right0, Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type dg:DataGridRow}}}""" & sDelim 
    sXaml = sXaml & " Create=""{Binding Path=Item.Right1, Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type dg:DataGridRow}}}""" & sDelim 
    sXaml = sXaml & " Delete=""{Binding Path=Item.Right2, Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type dg:DataGridRow}}}""" & sDelim 
    sXaml = sXaml & " Review=""{Binding Path=Item.Right3, Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type dg:DataGridRow}}}""" & sDelim 
    sXaml = sXaml & " />" & sDelim 
    sXaml = sXaml & " </DataTemplate>" 

Наконец, вы можете установить DataTemplate:

Dim oTemp As DataGridTemplateColumn = Nothing 
     oTemp.CellTemplate = oDataTemplate 
Смежные вопросы