2

XAML バインド マークアップ内でブール型プロパティを無効にすることができます。それが正しい説明かどうかはわかりません。たとえば、アクティブかどうかに基づいてウィンドウ境界コントロールの可視性を設定するために、組み込みのコンバーターの 1 つを使用しています。

<Border BorderBrush="{StaticResource BorderColorBrush}" 
        BorderThickness="1" 
        Visibility="{Binding IsActive, 
                     RelativeSource={RelativeSource FindAncestor, 
                                     AncestorType={x:Type Window}}, 
                     Converter={StaticResource bool2VisibilityConverter}}" />

これとは反対に、ウィンドウがアクティブな場合は可視性を false に設定したいと思います。これは単なる例ですが、「!」を適用すると便利な他の状況に出くわしました。ストックコンバーターによって評価されているブール値のプロパティに変換するので、カスタムのものを書く必要はありません。

4

2 に答える 2

3

ViewModel で否定されたプロパティを作成します。

public bool IsNotActive {get { return !IsActive; } }

それに応じて変更を通知し、

- また -

を使用しますInverseBoolToVisibilityConverter:

public class InverseBoolToVisibilityConverter: BaseConverterMarkupExtension<bool, Visibility>
    {
        public override Visibility Convert(bool value, Type targetType, object parameter)
        {
            return !value ? Visibility.Visible : parameter != null ? Visibility.Hidden : Visibility.Collapsed;
        }

        public override bool ConvertBack(Visibility value, Type targetType, object parameter)
        {
            return value != Visibility.Visible;
        }
    }
于 2013-08-22T16:17:17.760 に答える