のユニークなアイテムを確認するには、のリストを含むクラスmyClass
があります。このelement
には、それらを識別する属性name
があります。私のSilverlight 4アプリケーションでSilverlightデータバインドリスト
class element
{
string Name { get; set; }
}
class myClass
{
List<element> elements { get; }
}
要素のリストを表示するには、私は、Silverlightの-リストボックスにmyClass.elements
をデータバインド:
<ListBox>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<TextBox Text="{Binding Name, FallbackValue=[None], Mode=TwoWay,
NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
...
この方法で、element
のName
への変更は自動的に伝播されます。しかし:私はmyClass
の特性に応じて、Name
はmyClass.elements
で一意であることを、確認する必要があり(およびいくつかのより多くの制約
当然のことながら、要素は、それが含まれています誰が知っていません(と、それは知っているべきではありません、だから私の問題は:どのように(名前プロパティの設定者の)要素の制約をチェックすることができますか?私は本当にエラー通知を実装しているので、Silverlight-Databindingを本当に使いたいと思います。
私はelement
がIMPL必要があることをお勧めしたい事前に
おかげで、
フランク
1つの質問ですが、ユーザーが複製を入力しようとするとアプリは何をすると思いますか?エレメントセッターがアイテムを検証するためにコンテナークラスがサブスクライブしているイベントを発生させることができます。 – EtherDragon
アプリケーションは値を保存してはならず、テキストボックスは(NotifyOnValidationErrorとValidatesOnExceptionsを介して)エラーを表示するので、設定者はエラーを発生させる必要があります。私がセッターでイベントを起こしたとき、私はセッターで検証結果に反応することができませんでした(プロパティを設定せず、エラーを発生させません)。 – Aaginor