1

我有一个用户控件,它是一个文本框和两个按钮的组合。我已经设置了 Dependency 属性,以便它正确绑定到我的模型。问题是当我遇到验证错误时,“红色”边框会同时包裹文本框和按钮。

我想改变行为,以便在出现错误时,只有内部文本框有红色边框,但不知道如何做到这一点。

[试图发布图像,但我不够高:-(]

我的文本框有 this 作为它的绑定(在用户控件内,它被包裹在一个带有按钮堆栈面板的网格中,因为它们是动态的)

代码隐藏

private static DependencyProperty TextProperty = DependencyProperty.Register("Text", typeof(string), typeof(UserControl));

XAML 文件

<Textbox Grid.Column="0"
         Text="{Binding Text, Mode=TwoWay, StringFormat={StaticResource CommaFormat}
            , RelativeSource={RelativeSource FindAncestor
            , AncestorType={x:Type UserControl}}, ValidatesOnDataErrors=True}"
         x:Name="txt" 
         MaxLength="6" Height="22" Width="65" VerticalAlignment="Top" />

在我的主要形式中..我有这个 xaml 绑定

<WeightTextbox Grid.Column="1" Grid.Row="2" Margin="5,0"
               Text="{Binding SelectedDocument.Weight1,
                      Mode=TwoWay,
                      ValidatesOnDataErrors=True,
                      TargetNullValue={x:Static sys:String.Empty}}" />

注意:这在单个窗口窗体上出现 5 次,以便我可以为我的文档收集不同的权重。

我尝试过搜索,但找不到任何东西。

编辑(最终足够高的代表添加图像)

4

1 回答 1

0

昨天终于有一个啊哈时刻,所以我发布这个以防有人来搜索。向我的 WeightTextbox 添加了一个名为“Required”的依赖属性

  private static DependencyProperty RequiredProperty = DependencyProperty.Register("Required", typeof(bool), typeof(xagDateTimeCustom));

    public Boolean Required
    {
        get
        {
            return (bool)GetValue(RequiredProperty);
        }
        set
        {
            bool oldValue = Required;
            SetValue(RequiredProperty, value);
            DependencyPropertyChangedEventArgs e = new DependencyPropertyChangedEventArgs(RequiredProperty, oldValue, value);
            OnPropertyChanged(e);
        }
    }

在我的主表单中,我现在执行以下操作..(设置了新的必需属性并且 ValidatesOnDataErrors 设置为 False

<WeightTextbox Grid.Column="1" Grid.Row="2" Margin="5,0"
               Required=True
               Text="{Binding SelectedDocument.Weight1,
                      Mode=TwoWay,
                      ValidatesOnDataErrors=False,
                      TargetNullValue={x:Static sys:String.Empty}}" />

然后在我的自定义控件中,我实现了 IDataErrorInfo ,它现在似乎可以工作了。

在此处输入图像描述

于 2013-11-20T18:30:42.737 回答