编程语言
首页 > 编程语言> > c# – 使用COntrol键控制按钮的可见性

c# – 使用COntrol键控制按钮的可见性

作者:互联网

我想在我的c#WPF应用程序的窗口中控制我的按钮的可见性.

.只有当用户点击“alt a b”时,该按钮才应该是可变的.如果用户点击“alt a c”,则该按钮应该是不可见的.我怎么能这样做.任何想法?

解决方法:

就个人而言,我会在我的视图模型中创建一个名为IsButtonVisible的布尔属性,该属性实现了INotifyPropertyChanged接口.

然后我会添加一些处理程序方法来处理按键(KeyDown事件):

if ((Keyboard.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt) // Is Alt key pressed
{
    IsButtonVisible = Keyboard.IsKeyDown(Key.A) && Keyboard.IsKeyDown(Key.B);
}

现在IsButtonVisible属性将在正确按键时更新,我们只需要使用此值来影响Button的Visibility属性.为此,我们需要实现IValueConverter以在布尔值和Visibility值之间进行转换.

[ValueConversion(typeof(bool), typeof(Visibility))]
public class BoolToVisibilityConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value == null || value.GetType() != typeof(bool)) return null;
        bool boolValue = (bool)value;
        return boolValue ? Visibility.Visible : Visibility.Collapsed;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value == null || value.GetType() != typeof(Visibility)) return null;
        return (Visibility)value == Visibility.Visible;
    }
}

现在,我们只需要从XAML Button声明绑定到我们的Boolean属性:

<Button Visibility="{Binding IsButtonVisible, 
    Converter={StaticResource BoolToVisibilityConverter}, 
    FallbackValue=Collapsed, Mode=OneWay}">

标签:c,wpf,windows-applications
来源: https://codeday.me/bug/20190629/1326195.html