我遇到了将列标题和值绑定到MVVM PRISM中的数据网格的问题。
我正在使用SearchResult类,它有两个属性:
ColumnValues --->这些将作为其值应用于特定标头。
公共类SearchResult { public List ColumnNames;
public List<object> ColumnValues;
public string ColumnName { get; set; }
public object ColumnValue { get; set; }
public SearchResult()
{
this.ColumnNames = new List<string>();
this.ColumnValues = new List<object>();
}
public void AddColumnAttributes(string columnName, object columnValue)
{
this.ColumnNames.Add(columnName);
this.ColumnValues.Add(columnValue);
this.ColumnName = columnName;
this.ColumnValue = columnValue;
}
}
这些属性是通过C#代码动态填充的列表。
我需要将它们绑定到XAML中的列标题和列值。
我已经创建了ObservableCollection结果,它是我的gridview的源,但仍然没有绑定标题和值。
public ObservableCollection<SearchResult> Result
{
get { return this.searchResult; }
set
{
this.searchResult = value;
this.NotifyPropertyChanged("SearchResult");
}
}
和XAML:
<DataGrid ItemsSource="{Binding SearchResult}" Width="350">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.Header>
<TextBlock Text="{Binding ColumnName, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"></TextBlock>
</DataGridTemplateColumn.Header>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
我会感激任何帮助!
答案 0 :(得分:0)
我厚的你的代码应该是这样的..
<DataGrid ItemsSource="{Binding SearchResult, ElementName=PageTitle}" Width="350">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.Header>
<TextBlock Text="{Binding ColumnNames/ColumnName, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"></TextBlock>
</DataGridTemplateColumn.Header>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>