2012-04-30 6 views
1

私のxamlファイルには異なるコレクションにバインドされ、異なる名前と異なるGrid.Column属性を持つ2つの同一のDataGridがあります。これらのデータグリッドのマークアップを繰り返さない方法がありますが、より簡潔なものがありますか?プログラミング言語のマクロ置換のように? xamlで同様のマークアップを繰り返さないようにするにはどうすればよいですか?

 
     <DataGrid AutoGenerateColumns="False" 
       CanUserAddRows="False" 
       ItemsSource="{Binding View0}" 
       Name="DataGrid0" 
       SelectedItem="{Binding SelectedTask}" 
       SelectionMode="Single" 
       Grid.Column="0" 
       views:DataGridProperties.RowEditEndingCommand="{Binding UpdateTaskCommand}"> 
     ... 
     </DataGrid> 
     ... 
     <DataGrid AutoGenerateColumns="False" 
       CanUserAddRows="False" 
       ItemsSource="{Binding View1}" 
       Name="DataGrid1" 
       SelectedItem="{Binding SelectedTask}" 
       SelectionMode="Single" 
       Grid.Column="1" 
       views:DataGridProperties.RowEditEndingCommand="{Binding UpdateTaskCommand}"> 
     ... 
     </DataGrid>

答えて

1

通常はほとんどのプロパティを処理する同一の値に対してStylesを使用します。プロパティが同一でない場合は、通常、これ以上進める必要はありません。

+0

ありがとうございます。あなたは私に例を与えることができますか? – akonsu

+0

@akonsu:できましたが、できません。リンク先の[this](http://msdn.microsoft.com/en-us/library/ms745683.aspx)を読んでください。 –

0

これを行うにはたくさんの方法がありますが、私はこれに対して1つの正解があるとは思わないと思います。 これは私の頭の上のほんの一部です:

A)関数のようなデータグリッド "ジェネレータ"を持ち、コードで動的にデータグリッドを読み込むことができます。

B)Uouはxaml(load xaml markup)を使用してDataGridを動的に読み込むことができました。

C)xamlで1つのデータグリッドを定義してください。その後、追加のデータグリッドをContentControl、ItemsControl、StackPanelなどに動的に追加し、最初のデータグリッドからコピーされたプロパティを使用します。

D)DataGrid(カスタムDataGridコントロール)を定義するUserControlを作成できます。次に、このデータグリッドをXamlまたはコード経由で追加するだけです。

関連する問題