0

私はビューモデルです、私は持っています:

   public enum EventViewMode
   {
       View,
       Update,
       Insert
   }

次に、ビューで一部のコントロールが表示されるか、値がに一致しないようにする必要がありますEventViewMode

ブール値には、BooleanToVisibilityConverterコンバーターを使用しました。

バインディングシステムで式を使用して、列挙値をブール式に変換する方法はありますか?

つまり、次のようなものです。

<Button x:Name="btnSave"  
   Visibility="{Binding MyVariable == EventViewMode.View ,  Converter={StaticResource booleanToVisibilityConverter}}" />

MyVariable == EventViewMode.Viewそれは機能しないことに注意してください、それは私が到達したいものを示すためのものです。

4

2 に答える 2

0

いいえ、私は恐れていません。あなたのオプションは

  • 値変換器を使用する
  • プロパティをEventViewMode
  • たとえば、データトリガーを使用して、列挙値に基づいて目的のプロパティ(この場合は可視性)を設定します

    <Button x:Name="btnSave" Visibility="{Binding MyVariable == EventViewMode.View ,  Converter={StaticResource booleanToVisibilityConverter}}">
        <Button.Style>
            <Style TargetType={x:Type Button}>
                <Setter Property="Visibility" Value="Collapsed" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding MyVariable}" Value="View">
                        <Setter Property="Visibility" Value="Visible" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Button.Style>
    </Button>
    
于 2013-02-12T17:29:25.473 に答える
0

ビューモデルでプロパティを公開するだけです。

public bool IsVisible { get { return MyVariable == EventViewMode.View; } }

MyVariableを変更するときは、IsVisibleのプロパティ変更通知を上げることを忘れないでください。

ビューモデルを汚染したくない場合、次の最も簡単なオプションは、別の値コンバーターを実装することです。

于 2013-02-12T17:52:31.067 に答える