gpt4 book ai didi

ValidationRule 中的 wpf 绑定(bind)属性

转载 作者:行者123 更新时间:2023-12-03 03:50:49 26 4
gpt4 key购买 nike

我有一个带有 2 个文本框的表单:

  1. TotalLoginsTextBox

  2. UploadsLoginsTextBox

我想限制 UploadsLoginsTextBox,因此文本的最大输入将是 TotalLoginsTextBox 的值。我还使用值转换器,因此我尝试限制最大值:

这是 XAML:

<!-- Total Logins -->
<Label Margin="5">Total:</Label>
<TextBox Name="TotalLoginsTextBox" MinWidth="30" Text="{Binding Path=MaxLogins, Mode=TwoWay}" />
<!-- Uploads -->
<Label Margin="5">Uploads:</Label>
<TextBox Name="UploadsLoginsTextBox" MinWidth="30">
<TextBox.Text>
<Binding Path="MaxUp" Mode="TwoWay" NotifyOnValidationError="True">
<Binding.ValidationRules>
<Validators:MinMaxRangeValidatorRule Minimum="0" Maximum="{Binding Path=MaxLogins}" />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>

问题我收到以下错误:

A 'Binding' cannot be set on the 'Maximum' property of type 'MinMaxRangeValidatorRule'. A 'Binding' can only be set on a DependencyProperty of a DependencyObject.

进行绑定(bind)的正确方法是什么?

最佳答案

您看到此错误是因为如果您想将 MinMaxRangeValidatorRule.Maximum 绑定(bind)到 MaxLogins,则它需要是 DependencyProperty,而它可能是一个简单的 CLR 属性。

真正的问题是 MinMaxRangeValidatorRule 应该能够从 ValidationRule 和 DependencyObject 继承(以使依赖属性可用)。这在 C# 中是不可能的。

我通过这种方式解决了类似的问题:

  1. 为您的验证器规则命名

    <Validators:MinMaxRangeValidatorRule Name="MinMaxValidator" Minimum="0" />
  2. 在代码隐藏中,每当 MaxLogins 更改时设置最大值

    public int MaxLogins 
    {
    get { return (int )GetValue(MaxLoginsProperty); }
    set { SetValue(MaxLoginsProperty, value); }
    }
    public static DependencyProperty MaxLoginsProperty = DependencyProperty.Register("MaxLogins ",
    typeof(int),
    typeof(mycontrol),
    new PropertyMetadata(HandleMaxLoginsChanged));

    private static void HandleMinValueChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
    mycontrol source = (mycontrol) d;
    source.MinMaxValidator.Maximum = (int) e.NewValue;
    }

关于ValidationRule 中的 wpf 绑定(bind)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7456334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com