我有一个包含布尔值的DataGridTextColumn,这些布尔值在列上返回TRUE或FALSE。
我想用两张图片替换它,一张用于TRUE,一张用于FALSE。
这是DataGrid:
<DataGrid x:Name="DonneesBrutes" IsReadOnly="True" ItemsSource="{Binding Path=ResultatCollectionGrande}" Margin="10,65,0,0" AutoGenerateColumns="False" EnableRowVirtualization="True" RowDetailsVisibilityMode="VisibleWhenSelected">
<DataGrid.Columns>
<DataGridTextColumn x:Name="PrisEnCompte" Width="50" Binding="{Binding Path=Flag, Converter={StaticResource BooleanConverter}}" Header="PEC"></DataGridTextColumn>
资源:
<Window.Resources>
<local:BooleanConverter x:Key="BooleanConverter"/>
</Window.Resources>
这是转换器:
public class BooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value.Equals(true)) return @"booleanTrue.png";
return @"booleanFalse.png";
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
转换器工作,它会更改我的DataGridTextColumn显示的内容。现在它显示&#34; booleanTrue.png&#34;为TRUE和&#34; booleanFalse.png&#34;但它没有显示图像。
如何显示&#39; em,我在DataGrid中打印这些图像时缺少什么?
提前感谢您的帮助。
答案 0 :(得分:1)
您不需要使用DataGridTextColumn,而是需要Template列才能在此列中显示Image,并仅在此模板列中应用绑定。让我告诉你的方式
您的数据网格应该是这样的
<DataGrid x:Name="DonneesBrutes" IsReadOnly="True" ItemsSource="{Binding Path=ResultatCollectionGrande}" Margin="10,65,0,0" AutoGenerateColumns="False" EnableRowVirtualization="True" RowDetailsVisibilityMode="VisibleWhenSelected">
<DataGrid.Columns>
<DataGridTemplateColumn Header="PEC" x:Name="PrisEnCompte">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Height="50" Width="50" Source="{Binding Path=Flag, Converter={StaticResource booleanConverter}}"></Image>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
你的布尔转换器应该是这样的。
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value.Equals(true))
return new Uri(@"C:\Users\pj827192\Desktop\Untitled.png");
return new Uri(@"C:\Users\Public\Pictures\Sample Pictures\Hydrangeas.jpg");
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
答案 1 :(得分:-1)
也许您应该返回标记以嵌入图像而不仅仅是图像名称。