• WPF 基础


    MultiBinding 与 Binding 一样继承自 BindingBase,因此可以使用 Binding 的地方都可以使用 MultiBinding。

    namespace System.Windows.Data
    {
        [ContentProperty("Bindings")]
        public class MultiBinding : BindingBase, IAddChild
        {
            ...
            public Collection<BindingBase> Bindings { get; }
        }
    }
    
    

    例子:
    在一个注册界面中,当两次输入的密码一致且邮箱不为空时,可以点击提交。

    <StackPanel Grid.Row="12">
        <TextBox x:Name="passwd"/>
        <TextBox x:Name="passwdConfirm"/>
        <TextBox x:Name="email"/>
        <Button x:Name="buttonSubmit" Content="click me" Width="100" HorizontalAlignment="Left" Click="buttonSubmit_Click"/>
    </StackPanel>
    
    public class LogonMultiBindingConverter : IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            if ( !values.Cast<string>().Any(text => string.IsNullOrWhiteSpace(text))
                && values[0].ToString() == values[1].ToString() 
                && !string.IsNullOrWhiteSpace(values[2].ToString()))
            {
                return true;
            }
    
            return false;             
        }
    
        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
        
    Binding b1 = new Binding("Text") { Source = this.passwd };
    Binding b2 = new Binding("Text") { Source = this.passwdConfirm };
    Binding b3 = new Binding("Text") { Source = this.email };
    
    MultiBinding mb = new MultiBinding() { Mode=BindingMode.OneWay };
    mb.Bindings.Add(b1);
    mb.Bindings.Add(b2);
    mb.Bindings.Add(b3);
    mb.Converter = new LogonMultiBindingConverter();
    
    this.buttonSubmit.SetBinding(Button.IsEnabledProperty, mb);
    
  • 相关阅读:
    apache设置无缓存
    唤醒键盘时取消对特定类的position:fixed定位
    vscode增加sftp扩展
    浮层蒙版加载中实现方式
    管理应用程序版本Elastic Beanstalk
    向 Elastic Beanstalk 环境中添加数据库
    在 Amazon ECS 上运行 X-Ray 守护程序
    SNS Message Attributes
    ProvisionedThroughputExceededException
    使用 Amazon CloudWatch Events 检测和响应管道状态更改
  • 原文地址:https://www.cnblogs.com/MichaelLoveSna/p/14444272.html
Copyright © 2020-2023  润新知