質問

ようにしていくカスタムコンポーネントのラインナップValidationRule執行がある物件ならではのコンテキスト内で指定されたコレクション.例えば:私のコレクション編集のカスタムオブジェクトへのListViewいることを確実にしなければならな名は、それぞれのプロパティでオブジェクトコレクションにはユニークです。というかるのか?

役に立ちましたか?

解決

最初に、私の作成を単純DependencyObjectクラス開催のコレクション:

class YourCollectionType : DependencyObject {

    [PROPERTY DEPENDENCY OF ObservableCollection<YourType> NAMED: BoundList]

}

そして、おValidationRule由来のクラスは、プロパティを作成します:

YourCollectionType ListToCheck { get; set; }

その後、ォいます:

<Binding.ValidationRules>
    <YourValidationRule>
       <YourValidationRule.ListToCheck>     
          <YourCollectionType BoundList="{Binding Path=TheCollectionYouWantToCheck}" />
       </YourValidationRule.ListToCheck>
    </YourValidationRule>
</Binding.ValidationRules>

その後に検証、見ListToCheckのBoundList物コレクションの項目にいることの妥当性を検証す。だがもちろんのこと、falseを返し検証結果です。いない場合は、trueを返します。

他のヒント

私だけを作成するカスタムオブジェクトの依存関係があった場合その他の特性のいく結びます。この場合は全てていることからこのような取り付けるシングルコレクションの値をチェックに対し、私 <UniqueValueValidationRule.OtherValues> 建物の正面がガラス張りで、 <CollectionContainer>.

から、過去の問題 DataContext れていないものを受け継ぎ、 <TextBox.Resources> が不要とな <CollectionViewSource> で、実際に結合することができ {StaticResource} キー OtherValues その場所で使用して結合す。

のバリデーションルール自体にしみわたってループ OtherValues.Collection を行って平等の確認をしています。

観測:

    <TextBox>
        <TextBox.Resources>
            <CollectionViewSource x:Key="otherNames" Source="{Binding OtherNames}"/>
        </TextBox.Resources>
        <TextBox.Text>
            <Binding Path="Name">
                <Binding.ValidationRules>
                    <t:UniqueValueValidationRule>
                        <t:UniqueValueValidationRule.OtherValues>
                            <CollectionContainer Collection="{Binding Source={StaticResource otherNames}}"/>
                        </t:UniqueValueValidationRule.OtherValues>
                    </t:UniqueValueValidationRule>
                </Binding.ValidationRules>
            </Binding>
        </TextBox.Text>
    </TextBox>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top