0

データ型 (Int32、float など) に応じて、データバインドされた DataGrid の水平方向の列の配置を変更しようとしています。

私が学んだ年齢の簡単な例をWebで検索した後、xamlを介したDataTriggersがそれを行うための正しいオプションであるはずです。そうですか?もしそうなら、どのようにトリガーを実装しますか?

私は WPF を初めて使用し、過去に WindowsForms を使用していました。データ型に応じて列の向きを変更するのはそれほど難しくありませんか? どんな助けでも大歓迎です!

4

3 に答える 3

1

AutoGeneratingColumn イベントを処理できます。

xaml に次を追加します。

<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="True" 
          AutoGeneratingColumn="DataGrid_OnAutoGeneratingColumn"></DataGrid>

コード ビハインド:

private void DataGrid_OnAutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
   if (e.PropertyType == typeof (Int32))
   {
       if (e.Column != null)
       {
          var dgct = new DataGridTemplateColumn();
          var cName = e.Column.Header as string;
          var b = new Binding(cName);

          var sfactory = new FrameworkElementFactory(typeof(TextBlock));
          sfactory.SetValue(TextBlock.TextProperty, b);
          sfactory.SetValue(TextBlock.TextAlignmentProperty, TextAlignment.Right);
          var cellTemplate = new DataTemplate();
          cellTemplate.VisualTree = sfactory;
          dgct.CellTemplate = cellTemplate;

          dgct.Header = cName;
          dgct.SortMemberPath = cName;

          e.Column = dgct;
       }
   }

   ... *and so on for all your data types*

}

次のリンクを確認できます。

http://msdn.microsoft.com/en-us/library/cc903950(v=vs.95).aspx http://mareinsula.wordpress.com/2011/06/06/tips-on-wpf-autogenerating-データグリッド/

于 2013-11-07T15:44:36.393 に答える
1

これは役立つかもしれません -メンバー変数に基づくさまざまなビュー/データ テンプレート

もう 1 つのオプションは、DataTemplate セレクターを使用することです。このチュートリアルを確認してください: http://tech.pro/tutorial/807/wpf-tutorial-how-to-use-a-datatemplateselector

于 2013-11-01T14:32:55.283 に答える