【问题标题】:UWP Binding two booleans to IsEnabled propertyUWP 将两个布尔值绑定到 IsEnabled 属性
【发布时间】:2019-12-25 18:54:09
【问题描述】:

我在我的 UWP 程序中实例化了两个不同的对象。它们的类定义如下所示:

namespace StackOverflow
{
    public class FirstClass : INotifiyPropertyChanged
    {
        private bool isEnabled = false;
        public bool IsEnabled 
        {
            get => isEnabled;
            set
            {
                isEnabled = value;
                NotifyPropertyChanged();
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
        private void NotifyPropertyChanged([CallerMemberName] string propertyName = "") => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }

    public class SecondClass : INotifiyPropertyChanged
    {
        private bool isEnabled = false;
        public bool IsEnabled 
        {
            get => isEnabled;
            set
            {
                isEnabled = value;
                NotifyPropertyChanged();
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
        private void NotifyPropertyChanged([CallerMemberName] string propertyName = "") => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

XAML 端的绑定当前如下所示:

<Button Content="Press me if you can" IsEnabled="{x:Bind FirstClass.IsEnabled, Mode=OneWay}"/>

使用此代码,Button.IsEnabled 仅依赖于 FirstClass.IsEnabled,我想要实现的是 Button.IsEnabled 属性依赖于 FirstClass.IsEnabled 和 SecondClass.IsEnabled。我怎样才能得到这样的结果?

我想实现 MultiBinding,但它似乎是 WPF 独有的功能

【问题讨论】:

    标签: c# uwp binding boolean


    【解决方案1】:

    我们不能直接在xaml中绑定两个属性。好像只能在code-behind中操作。当你设置FirstClass或SecondClass的IsEnabled时,再判断Button的IsEnabled手动。

    【讨论】:

    • 是否可以绑定两个代码行为变量?就像,创建第三个类,它有两个分离的绑定到 FirstClass 和 SecondClass 将用作源和输出,这将是 xaml 后面的内容。
    • 可行的是结合两个isEnabled属性,只确定并输出一个值,保证绑定值唯一。
    猜你喜欢
    • 2014-10-17
    • 1970-01-01
    • 2011-08-26
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多