绑定到WPF DataGrid中的简单属性
本文关键字:简单 属性 DataGrid WPF 绑定 | 更新日期: 2023-09-27 18:09:58
我有一个问题绑定到我的模型上的属性。在DataGrid中,我显示错误。每个错误都有属性ErrorDescription
,它本身也有属性Severity
。
我可以绑定到Severity
在我的DataGrid的TextColumn下面,但是绑定到Severity
在templateccolumn失败与错误
"在类型的数据上下文中无法解析属性"ErrorDescription"MainViewModel "
数据文本我的图像列与我的第一个文本列不一样。为什么呢?
<DataGrid ItemsSource ="{Binding Errors}" AutoGenerateColumns="False">
<DataGrid.Columns>
// works
<DataGridTextColumn Binding="{Binding ErrorDescription.Severity}"></DataGridTextColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image>
<Image.Style>
<Style TargetType="Image">
<Style.Triggers>
// Binding fails
<DataTrigger Binding="{Binding ErrorDescription.Severity}" Value="Unknown">
<Setter Property="Source" Value="/error.jpg"/>
</DataTrigger>
// Binding fails
<DataTrigger Binding="{Binding ErrorDescription.Severity}" Value="Ok">
<Setter Property="Source" Value="/ok.jpg"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
如何使用转换器而不是DataTrigger?当我想要根据枚举显示图标或特定属性值时,我使用Converter来完成。
转换器类似于:
public class ErrorSeverityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
Severity severity = (Severity)value;
switch(severity)
{
case Severity.Unknown:
return "/error.jpg";
case Severity.Ok:
return "/ok.jpg";
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
还有另一个非常相似的问题,即使不是在datagridtemplatecoluml
根据enum值启用TextBox