0
我需要創建綁定到一個對象,它是類似於下面的一個DataGrid:創建數據表內的的IValueConverter類的DataGrid綁定
public class MyClass
{
public string Header { get; set; }
public string[] Values { get; set; }
}
正如你所看到的,所需要的表頭不是對象的屬性名稱,所以我不能只使用AutoGenerateColumns。到目前爲止,我的想法是使用轉換器獲取MyClass對象並將它們轉換爲DataTable。
public object Convert(
object value,
Type targetType,
object parameter,
System.Globalization.CultureInfo culture)
{
var items = value as IEnumerable<MyClass>;
if (items != null)
{
DataTable dTable = new DataTable();
foreach (MyClass item in items)
dTable.Columns.Add(new DataColumn(item.Header, typeof(string)));
return dTable;
}
else
return null;
}
我設置包含網格的DataContext的是一個List<MyClass>
對象和轉換()方法被擊中,數據表是由事物的外觀創建好了,但是當我來運行應用程序時, DataGrid只是空白。這裏是我的XAML的基本視圖:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<local:DataTableConverter x:Key="converter"/>
</Window.Resources>
<Grid x:Name="grid">
<DataGrid AutoGenerateColumns="True"
ItemsSource="{Binding Path=., Converter={StaticResource converter}}"/>
</Grid>
</Window>
任何想法爲什麼DataGrid保持爲空?
什麼是更好的方法來設計呢? –
@Tom,我不知道你爲什麼這樣做,所以這可能是最好的選擇。但是一般來說,你應該有一些具體類型的對象集合,每個對象代表一行。 – svick
我遇到的問題是,對象可能表示n列 - 可能是1,可能是100 - 每個只有一個或零值(實質上是一個帶有文本框事件的標籤)。該解決方案感覺不正確...但現在是解決方案:) –