我有一個我希望綁定到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個)。它還包含一個Message屬性,它應該只顯示在一列中(靜態的,只是一些文本信息)。它還包含一個Header字符串,該字符串應顯示爲該列的標題。
注意,列的數目是可變的(在目前的頭被設定爲確認但是這將改變以表示動態數據)。
更新:這是瑞秋
<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