WPF:将图像绑定到Integer-DB-Field

时间:2012-01-31 20:12:14

标签: database image binding

我正在学习WPF几周,但现在我遇到了一个我尚未解决的问题。我正在使用我的电话线,当新的呼叫进入时,我将数据库中的整数设置为“1”。当Line处于活动状态时,我将其设置为“2”......当Line打开时,Integer为“0”。在我的WPF应用程序中,我得到了一个像小绿色LED的小图像。当呼叫进入/线路被阻止/激活时,它必须是例如红色LED。我读过很多关于DataTrigger和EventTrigger的文章,但我不知道这是否是正确的起点。

有人能给我一点暗示吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

有几种方法可以实现这一目标。如果您正在使用MVVM(并且您可能应该使用),那么您可以在视图模型上使用字符串属性,该属性根据整数值返回相应的图像路径。然后,您可以将Image控件的Source值绑定到视图中视图模型的属性。

<Image Source="{Binding MyImagePathStringProperty}" Width="32" Height="32" />

或者,您可以将此整数属性公开给视图,并使用DataTrigger根据此整数值设置图像源。

<Image>
  <Image.Style>
    <Style TargetType="{x:Type Image}">
        <Setter Property="Source" Value="/Images/MyDefaultImage.png" />
        <Style.Triggers>
            <DataTrigger Binding="{Binding MyIntegerProperty}" Value="0">
                <Setter Property="Source" Value="/Images/MyFirstImage.png"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding MyIntegerProperty}" Value="1">
                <Setter Property="Source" Value="/Images/MySecondImage.png"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding MyIntegerProperty}" Value="2">
                <Setter Property="Source" Value="/Images/MyThirdImage.png"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
  </Image.Style>
</Image>