0

はっきりしない場合は申し訳ありませんが、頭の中もはっきりしていません(特に他の投稿で自分の道を見つけようとした後:p)

私が喜んでやろうとしているのは、ボタンを含むゼロから多数の列を持つコードで DataGrids を作成することです。これは、1 つの同じ関数を呼び出しますが、「パラメーター」(列ごとに異なります) を使用します。

これが私がこれまでに得たものです: コードで作成された DataGrid xaml リソースで定義された DataTemplate (ボタン付き) 上記の DataTemplate を使用する DataGridTemplateColumn

ボタンのプロパティ (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 に答える