0

抱歉,如果我不清楚,我的脑海中也不是很清楚(尤其是在尝试在其他帖子中找到我的方式之后:p)

我愿意做的是在代码中创建 DataGrids,从零到多个包含一个按钮的列,这将调用一个相同的函数,但具有一个“参数”(每列不同)。

到目前为止,这是我得到的:在 xaml 资源中定义的代码 DataTemplate 中创建的 DataGrid(带有按钮) DataGridTemplateColumn 使用上述 DataTemplate

是否可以将按钮的属性(在 DataTemplate 中)绑定到 DataGridTemplateColumn 属性(在我的情况下,列标题可以),以及如何?

有没有办法在代码中访问 DataTemplate 组件(例如按钮)并修改它们的属性?

是否可以(并且没有危险)在代码中创建 DataTemplate?我在 xaml 中声明了我的,因为我发现一个帖子建议这样做而不是代码。

谢谢你的帮助。

4

1 回答 1

0

乔皮

您可以让 XamlReader 完成工作:

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

sXaml 我应该是这样的(在我的情况下,这是一个包含一些复选框的用户控件,这些复选框绑定到数据表字段):

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

最后,您可以设置数据模板:

 Dim oTemp As DataGridTemplateColumn = Nothing
       oTemp.CellTemplate = oDataTemplate
于 2010-03-21T20:06:09.097 回答