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

时间:2014-10-01 08:40:21

标签: c# wpf datagrid boolean ivalueconverter

我有一个包含布尔值的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中打印这些图像时缺少什么?

提前感谢您的帮助。

2 个答案:

答案 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)

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