基于变量交换图像

时间:2013-07-30 14:34:05

标签: c# xaml user-interface streaming

我有一个使用XAML和C#(MVVM)的应用程序来创建一个允许您启动和停止摄像头源的界面。

我想要做的是根据变量IsOn在OFF和ON图像之间切换。

我知道如何在手动操作系统中设置图像

<Image Source="/MyApp.WpfUI;component/Resources/Images/Webcasting.png" />      

但我不确定如何根据条件动态更改图像。我考虑过IF语句,但我不确定如何去做。

有没有人有任何建议或想法?

2 个答案:

答案 0 :(得分:2)

答案是: 将显示流的控件的IsEnabled属性绑定到代码中返回布尔值的属性 在您的视图中

<Image IsEnabled={Binding IsOn} Source="/MyApp.WpfUI;component/Resources/Images/Webcasting.png" /> 

在此属性的 getter 中,输入条件语句以确定是否返回true或false。 在您的ViewModel中:

public bool IsOn 
{
    get
    {
        if(<some condition>)
            return true;
        else
            return false;
    }
}

备注

  • 不要忘记在必要时使用您的INotifyPropertyChanged实现来提醒用户界面。
  • 如果你实现了一个setter,你可以在View上有一个按钮来切换值,让你手动控制。
  • 绑定也可用于改变流的 Source ,并使用与上述相同的技术。即,getter将返回视频流的路径或指向“Video Off”的静态图像的路径。 但是,这取决于您使用的控件是否可以处理。而不是 IsEnabled 属性,您将使用与 Source <的绑定/ em> attribute。
  • 这里有一些链接可以显示一些类似的实现:
祝你好运。

答案 1 :(得分:1)

这里有两种选择。您可以使用问题中提到的if语句手动执行此操作,也可以创建DataTrigger&amp;将其分配给您的控件ControlTemplate

DataTriggers允许您在特定数据对象的值与您在XAML中指定的某些条件匹配时设置属性值。我建议阅读DataTriggers上的MSDN documentation,了解这些工作原理的基本示例。