3

ItemTemplate に userControl を含む listView があります。この UserControl には、検証が必要なテキスト ボックスがいくつか含まれています。ListView の仮想化を有効にするまで、すべて正常に動作します。現在、検証は表示されているアイテムに対してのみ機能します。

どうすればこれを解決できますか?

4

1 に答える 1

1

UI の仮想化はビジュアル コンテナーをリサイクルするため、コンテナーはリセットされます。解決策は、ユーザー コントロールの一部のプロパティに手動でバインドし、ビュー モデルで検証を行うことです。次に、検証に合格しない場合は、UserControl の境界線の色とサイズを赤と太い境界線に変更します。

<UserControl...>
  <Grid>
    <Border BorderThickness="{Binding Path=Border_Thickness_property}" BorderBrush="{Binding Path=Border_brush_color}">

    <!-- Put your textboxes and such here... -->

    </Border>
  </Grid>
</UserControl>

参照: http://www.codeproject.com/Articles/34405/WPF-Data-Virtualization

また

ビュー モデルに IDataErrorInfo を実装させ、そのインターフェイスを使用して検証ルールを定義できます。

このサイトには良い例があります。

于 2012-10-26T21:40:31.567 に答える