2

XAML と C# (MVVM) を使用して、カメラ フィードを開始および停止できるインターフェイスを作成するアプリケーションがあります。

私がやりたいことは、変数に応じて OFF と ON の画像を切り替えることですIsOn

UIで画像を手動で設定する方法を知っていますが、

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

しかし、条件に基づいて画像を動的に変更する最良の方法がわかりません。IF ステートメントを検討しましたが、どうすればよいかわかりません。

アドバイスやアイデアはありますか?

4

2 に答える 2

2

1 つの答えは 、ストリームを表示するコントロールの 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 の実装を使用して UI に警告することを忘れないでください。
  • セッターを実装する場合は、値を切り替えるボタンをビューに配置して、手動で制御できます。
  • 上記と同じ手法を使用して、バインディングを使用してストリームのソースを変更することもできます。つまり、getter は、ビデオ ストリームへのパスまたは「ビデオ オフ」を示す静止画像へのパスを返します。 ただし、これは、使用しているコントロールがそれを処理できるかどうかによって異なります。IsEnabled属性の代わりに、 Source属性とのバインドを使用します。
  • これのいくつかの同様の実装を示すいくつかのリンクを次に示します。

幸運を。

于 2013-07-30T14:48:26.043 に答える
1

ここには 2 つのオプションがあります。質問で述べたように、if ステートメントを使用してこれを手動で実行するかDataTrigger、コントロールを作成して & に割り当てることができますControlTemplate

DataTriggers を使用すると、特定のデータ オブジェクトの値が XAML で指定した特定の条件に一致する場合に、プロパティ値を設定できます。これらがどのように機能するかの基本的な例については、DataTriggers に関するMSDN ドキュメントを読むことをお勧めします。

于 2013-07-30T14:46:03.383 に答える