基于Binding更改按钮背景图像

时间:2014-09-25 08:13:35

标签: windows-phone-8 mvvm binding

我试图让按钮中的背景图像根据MVVM链接对象中的值进行更改。

按钮的默认样式是image1,

当对象处理成功后,该属性设置为"成功"并且按钮图像应更改为image2

但是当对象没有成功处理时,该属性设置为"错误:"并且按钮图像应更改为image3

我尝试绑定到表示文件位置的字符串(直接在Button.Background标记中的ImageBrush属性ImageSource上输入相同的字符串。

还将Uri返回到该文件是不是

尝试将Setter标记与触发器一起使用,XAML在使用

时中断

尝试使用对象中的附加属性从中创建一个BitmapImage。或者

这是应用程序中唯一剩下的东西。有人有一些建议

1 个答案:

答案 0 :(得分:0)

我现在找到了一个可行的解决方案。通过从按钮中删除背景,并将以下内容添加到内容:

      <Button.Content>
         <StackPanel Orientation="Vertical">
            <Image Source="{Binding Path=Background}" Stretch="Fill" Height="100" Width="400" />
            <TextBlock Margin="0,-130,0,0" Height="30" Width="400" HorizontalAlignment="Center"
                 TextAlignment="Center" VerticalAlignment="Center"  Text="{Binding Path=Title}"
                 Foreground="White" FontFamily="/Assets/futura-md.ttf#Futura Md BT"/>
         </StackPanel>
      </Button.Content>

将背景定义如下:

    public BitmapImage Background
    {
        get
        {
            return new BitmapImage(new Uri(string.Format( "/Assets/knop_{0}.png",buttoncolor), UriKind.Relative));
        }
    }

    public string ButtonImage 
    { 
        get { return buttonimage; } 
        set 
        { 
           buttonimage = value; 
           RaisePropertyChanged("ButtonImage"); 
           RaisePropertyChanged("Background"); 
        }
    }

现在,当ButtonImage的值发生变化时,按钮'background'将会改变。

这不完全是我所希望的,但它正在发挥作用。