2

カスタムコマンドがあります:

public static class CommandLibrary
{
    private static RoutedUICommand cmdMyCommand = new RoutedUICommand("My command", "MyCommand", typeof(CommandLibrary));
    public static RoutedUICommand MyCommand{ get { return cmdMyCommand ; } }
}

そして、私はこのようなバインディングを登録します

CommandManager.RegisterClassCommandBinding(typeof(SomeClass), new CommandBinding(CommandLibrary.MyCommand, new ExecutedRoutedEventHandler(myCommandExecuteHandler), new CanExecuteRoutedEventHandler(myCommandCanExecuteHandler)));

また、generic.xaml には Command プロパティが設定されたボタンがあります。myCommandCanExecuteHandler のロジックに基づいて、ボタンが適切に有効化/無効化されています。

しかし今、このボタンの可視性も制御したいと思います (IsEnabled にマップされている CanExecute とは無関係です)。どうすればその問題にアプローチできますか?

同じ問題についての議論がここにあります: http://social.msdn.microsoft.com/forums/en-US/wpf/thread/c20782f8-2d04-49d3-b822-f77b4b87c27a/ RoutedUICommand 派生クラスのプロパティは私には魅力的ではありません。

4

3 に答える 3

1

ボタンの可視性を決定する値に、xaml の可視性属性をバインドできます。

<Button Content="Button" Height="23" Visibility="{Binding someclass, Converter={Binding VisibitlityConverter}}"/>

コンバーターを使用してbool値をcallpsedまたはvisibleに変換します

class visibilityConverter : IValueConverter
{
    #region IValueConverter Members

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return (bool)value == true? Visibility.Visible : Visibility.Collapsed;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }

    #endregion
}
于 2012-06-09T12:00:00.400 に答える
0

ボタンが有効/無効になっているときにボタンを表示しますか...その場合、ブール値から可視性へのコンバーターを使用して IsEnabled プロパティを Visibility プロパティにバインドする必要があります...

于 2012-06-09T06:49:28.683 に答える