首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于条件的GridViewColumn图像

基于条件的GridViewColumn图像
EN

Stack Overflow用户
提问于 2017-06-23 19:25:26
回答 2查看 960关注 0票数 0

所以我有这个GridViewColumn

代码语言:javascript
复制
<GridViewColumn Width="60" Header="Checksum">
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <Image Width="18" Height="18" Source="pack://application:,,,/Resources/image.ico"/>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

我的班

代码语言:javascript
复制
public class MyData
{
    public bool IsOK {ger; set;}
}

因此,我想绑定我的bool属性:

代码语言:javascript
复制
`DisplayMemberBinding="{Binding IsOK }"

我希望为真image图像显示特定的and specific图像,用于false。

有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-23 19:33:50

使用DataTrigger

代码语言:javascript
复制
<GridViewColumn Width="60" Header="Checksum">
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <DataTemplate.Trigger>
                <DataTrigger Binding="{Binding IsOK}" Value="True">
                    <Setter TargetName="myImage" Property="Source" Value="pack://application:,,,/Resources/true.ico"/> 
                </DataTrigger>
                <DataTrigger Binding="{Binding IsOK}" Value="False">
                    <Setter TargetName="myImage" Property="Source" Value="pack://application:,,,/Resources/false.ico"/> 
                </DataTrigger>
            </DataTemplate.Trigger>
            <Image Width="18" Height="18" x:Name="myImage"/>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

我现在不能测试它,我发现这个解决方案可能会出错,因为我记不起答案了:

  • 您能用触发器中的字符串来设置源值吗?
  • 您能在数据板中引用元素的名称吗?

但基本上,答案是DataTrigger。或者一个转换器,它将接受IsOK并根据值返回一个图像。

票数 2
EN

Stack Overflow用户

发布于 2017-06-23 19:38:07

使用这样的IValueConverter

代码语言:javascript
复制
public class BoolToPathConverter : IValueConverter
{
    public string TruePath
    {
        get;
        set;
    } = "DefaultTrueImagePath";

    public string FalsePath
    {
        get;
        set;
    } = "DefaultFalseImagePath";

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value is bool)
        {
            bool val = (bool)value;

            return val ? TruePath : FalsePath;
        }
        else
        {
            return value;
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return Binding.DoNothing;
    }
}

最后你会有这样的事情:

代码语言:javascript
复制
  <Window.Resources>
        <!-- local: is the xmlns namespace of the converter  -->
        <local:BoolToPathConverter x:Key="BoolToPathConverter" TruePath="MyTruePath" FalsePath="MyFalsePath" />
    </Window.Resources>

    <Grid>
        <Image Source="{Binding Path=IsOk, Converter={StaticResource BoolToPathConverter}}" />
    </Grid>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44728648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档