布尔转换器打印一幅图像,只需打印图像名c#
我有一个包含布尔值的DataGridTextColumn,这些布尔值在列上返回TRUE或FALSE 我想用两个图像来代替这个,一个为真,一个为假 这是数据网格:布尔转换器打印一幅图像,只需打印图像名c#,c#,wpf,datagrid,boolean,ivalueconverter,C#,Wpf,Datagrid,Boolean,Ivalueconverter,我有一个包含布尔值的DataGridTextColumn,这些布尔值在列上返回TRUE或FALSE 我想用两个图像来代替这个,一个为真,一个为假 这是数据网格: <DataGrid x:Name="DonneesBrutes" IsReadOnly="True" ItemsSource="{Binding Path=ResultatCollectionGrande}" Margin="10,65,0,0" AutoGenerateColumns="False" EnableRowVirtu
<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>
转换器工作,它改变了我的DataGridTextColumn显示的内容。现在它显示“booleanTrue.png”表示TRUE和“booleanFalse.png”,但不显示图像
我如何显示它们,在我的数据网格中打印这些图像我缺少什么
提前感谢您的帮助。也许您应该返回嵌入图像的标记,而不仅仅是图像名称。您将要求模板列在此列中显示图像,并仅在此模板列中应用绑定,而不是使用DataGridTextColumn。让我给你带路 您的数据网格应该是这样的
<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>
图像位于解决方案的根上,所以在前面添加一个``是什么意思?不,我的意思是返回一个字符串,如:在DataGrid.Columns上可以返回这样的字符串吗?我试试看。编辑似乎是不可能的,它只需要DataGrid复选框/组合框/超链接/模板/文本也许其中一个可以让我做我想做的事?DataGridTemplateColumn似乎是解决方案,我尝试了。现在它可以工作了。我就是这样做的:
转换器不一定要返回URI。它也可以是字符串,WPFs内置类型转换为ImageSource类型(图像控件的Source
属性的类型)对这两种类型都有效。此外,当图像存储为程序集资源时(我将从OP中假定),必须返回有效的。另一种选择是直接创建并返回BitmapImage或BitmapFrame实例。
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();
}
}
<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();
}