WPFグリッドにバインドしたいコレクションがあります。wpfグリッドと動的列
私が直面している問題は、列の数が動的で、コレクションに依存していることです。
public interface IRows
{
string Message{get;}
IColumns[] Columns{get;}
}
public interface IColumns
{
string Header {get;}
AcknowledgementState AcknowledgementState{get;}
}
public interface IViewModel
{
ObservableCollection<IRows> Rows {get;}
}
私のビューは、列のコレクションを含む行コレクションにバインドする必要があります。
My Columnsコレクションには、イメージ(3つのうちの1つ)で表される列挙型が含まれています。また、1つの列にのみ表示する必要があるMessageプロパティも含まれています(静的で、一部のテキスト情報です)。また、その列のヘッダーとして表示されるヘッダー文字列も含まれています。
列の数が可変であることに注意してください(現時点でヘッダが肯定応答に設定されているが、これは動的データを表すように変更されます)。
更新:これはこれはほとんど私が今欲しいものを私に与えレイチェル
<ItemsControl
ItemsSource="{Binding Items, Converter={StaticResource PresentationConverter}}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid ShowGridLines="true"
local:GridHelpers.RowCount="{Binding RowCount}"
local:GridHelpers.ColumnCount="{Binding ColumnCount}" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Grid.Row" Value="{Binding RowIndex}"/>
<Setter Property="Grid.Column" Value="{Binding ColumnIndex}"/>
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ContentControl Content="{Binding}">
<ContentControl.Resources>
<DataTemplate DataType="{x:Type UI:MessageEntity}">
<TextBox Text="{Binding Message}"></TextBox>
</DataTemplate>
<DataTemplate DataType="{x:Type UI:StateEntity}">
<TextBox Text="{Binding State}"></TextBox>
</DataTemplate>
</ContentControl.Resources>
</ContentControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
からの提案を実施した後です。私はヘッダーのために何をしなければならないのかに悩んでいます。 ご提案は大歓迎です。
を行う最大の情報を提供する方法の一例で提起質問ですね。リンクを含む... – Harry
簡体字でリンクを追加しました。 – zman
行と列を動的に追加する方法のリンク - http://stackoverflow.com/questions/13344788/how-to-create-listview-to-a-grid-programmatically/ – Sai