2

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

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

我知道如何在 UI 中手动设置图像,

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

但我不确定如何最好地根据条件动态更改图像。我已经考虑过 IF 语句,但不知道该怎么做。

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

4

2 回答 2

2

一个答案是: 将显示流的控件的 IsEnabled 属性绑定到代码中返回布尔值的属性。
在您看来:

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

在此属性的getter中,放置您的条件语句来确定是否返回 true 或 false。
在您的视图模型中:

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

备注

  • 不要忘记在必要时使用您的 INotifyPropertyChanged 实现来提醒 UI。
  • 如果你实现了一个 setter,你可以在 View 上有一个按钮来切换值,让你手动控制。
  • 绑定也可用于更改流的,也可以使用与上述相同的技术。即,getter 将返回视频流的路径或显示“视频关闭”的静态图像的路径。 但是,这取决于您使用的控件是否可以处理该问题。您将使用与Source属性的绑定,而不是IsEnabled属性。
  • 这里有几个链接将向您展示一些类似的实现:

祝你好运。

于 2013-07-30T14:48:26.043 回答
1

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

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

于 2013-07-30T14:46:03.383 回答