WPF - 绑定按钮的可见性

23 浏览
0 Comments

WPF - 绑定按钮的可见性

我想将一个属性绑定到两个按钮上以实现可见性。我正在使用BooleantoVisibility转换器。我能够根据属性值隐藏或显示按钮。我的问题是,我只想显示其中的一个按钮。以下是我的代码。是否可以使用“NOT”进行绑定,还是我需要创建一个新的属性?


 

0
0 Comments

在上述代码中,问题是通过绑定属性将按钮的可见性绑定到了一个名为IsNewRecord的属性上。根据代码中的转换器InvertBooleanToVisibilityConverter的逻辑,当IsNewRecord为true时,按钮的可见性应该设置为Collapsed,当IsNewRecord为false时,按钮的可见性应该设置为Visible。然而,代码中使用的是InvertConverter,这意味着转换器的逻辑被反转了,当IsNewRecord为true时,按钮的可见性设置为Visible,当IsNewRecord为false时,按钮的可见性设置为Collapsed。

为了解决这个问题,我们需要修改代码,将转换器的逻辑反转回来。我们可以通过修改Convert方法来实现这一点,将返回值改为boolValue ? Visibility.Visible : Visibility.Collapsed。修改后的代码如下:

public class InvertBooleanToVisibilityConverter : IValueConverter
{       
    public object Convert(object value, Type targetType,
                          object parameter, CultureInfo culture)
    {
        var boolValue = (bool)value;            
        return boolValue ? Visibility.Visible : Visibility.Collapsed;
    }
    public object ConvertBack(object value, Type targetType,
        object parameter, CultureInfo culture)
    {
        return null;
    }
}

通过将这个修改后的转换器应用到按钮的可见性绑定上,可以解决按钮可见性与IsNewRecord属性之间的逻辑问题。

在XAML中,需要将修改后的转换器添加到UserControl的Resources中,如下所示:


  

然后,将转换器应用到按钮的可见性绑定中,如下所示:


通过以上修改,按钮的可见性将按照预期的逻辑进行设置,解决了原来代码中的问题。

0