1

テキスト ボックスと 2 つのボタンを組み合わせたユーザー コントロールがあります。モデルに正しくバインドされるように Dependency プロパティをセットアップしました。問題は、検証エラーが発生したときです。「赤い」境界線がテキスト ボックスとボタンの両方を囲んでいます。

エラーが発生した場合、内側のテキスト ボックスのみに赤い境界線が表示されるように動作を変更したいと考えていますが、これを行う方法がわかりません。

[画像を投稿しようとしましたが、十分に高くありません:-( ]

私のテキストボックスはこれをバインディングとして持っています(ユーザーコントロール内では、これは動的であるため、ボタンのスタックパネルを備えたグリッドにラップされています)

コードビハインド

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}}" />

注: これは 1 つの Windows フォームに 5 回表示されるため、ドキュメントのさまざまな重みを収集できます。

検索してみましたが、何も見つかりませんでした。

編集(最終的に画像を追加するのに十分な高さの担当者)

4

1 に答える 1

0

ついに昨日ああああの瞬間があったので、誰かが検索に来た場合に備えてこれを投稿します. 「必須」と呼ばれる依存関係プロパティを WeightTextbox に追加しました

  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 に答える