繁体   English   中英

将ToggleButton IsChecked属性绑定到另一个ToggleButton不起作用

[英]Binding ToggleButton IsChecked property to another ToggleButton not working

我有两个ToggleButtons

我需要将一个IsChecked属性绑定到另一个ToggleButton

我使用自定义Converter来反转值。

但是,它不起作用吗? 这是我的代码:

XAML:

<ToggleButton 
    IsChecked="{Binding Path=ToggleButton.IsChecked, ElementName=menuCatUit, 
    Converter={StaticResource InvertBool}}"/>

<ToggleButton x:Name="menuCatUit" IsChecked="True" />

码:

[ValueConversion(typeof(bool), typeof(bool))]
public class InverseBooleanConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (targetType != typeof(bool))
            throw new InvalidOperationException("The target must be a boolean");

        return !(bool)value;
    }
}

从路径属性中删除“ ToggleButton”。
您只需要属性名称。

<ToggleButton 
    IsChecked="{Binding Path=IsChecked, ElementName=menuCatUit, 
    Converter={StaticResource InvertBool}}"/>

这是我的工作,我将它们全部发送到同一Checked和UnChecked事件:

privateToggleButton Toggle;
public void ToggleButtonChecked(object sender, RoutedEventArgs e)
    {
        if (Toggle != null && Toggle != sender as ToggleButton)
        {
            Toggle.IsChecked = false;
        }

        Toggle = sender as ToggleButton;
    }

    public void ToggleButtonUnChecked(object sender, RoutedEventArgs e)
    {
        if (Toggle != null)
        {
            Toggle = null;
        }
    }

然后要检查选中了哪个ToggleButton,请执行以下操作

switch (Toggle.Name)
                {
                    case ("Button1"): /*MyCode*/ break;
                };

找到了解决方案:

我需要编辑converter因为ToggleButton使用nullable boolnullable bool

[ValueConversion(typeof(bool?), typeof(bool))]
public class InverseNullableBool : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (targetType != typeof(bool?))
            throw new InvalidOperationException("The target must be a nullable boolean");

        bool? b = (bool?)value;
        return !(b.HasValue && b.Value);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM