布尔转换器来打印图像,只需打印图像名称c#即可

本文关键字:图像 打印 即可 转换器 布尔 | 更新日期: 2023-09-27 18:25:14

我有一个包含布尔值的DataGridTextColumn,这些布尔值在Column上返回TRUE或FALSE。

我想用两个图像来代替它,一个表示TRUE,一个代表FALSE。

这是数据网格:

<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显示的内容。现在它显示"booleanTrue.png"表示TRUE和"booleanPalse.png",但不显示图像。

我该如何显示,在我的DataGrid中打印这些图像缺少什么?

提前感谢您的帮助。

布尔转换器来打印图像,只需打印图像名称c#即可

不使用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();
        }

也许您应该返回用于嵌入图像的标记,而不仅仅是图像名称。