ルールにバインドする他のプロパティがある場合にのみ、カスタム依存オブジェクトを作成します。この場合、チェックする値のコレクションを1つ追加するだけで、<UniqueValueValidationRule.OtherValues>
プロパティは<CollectionContainer>
になりました。継承されていないDataContext
の問題を乗り越えるためにそこから
、実際の結合を保持し、それをOtherValues
が、その後のような結合のソースを使用することができ{StaticResource}
キーを、与えるために<CollectionViewSource>
を持つことが必要<TextBox.Resources>
。
妥当性検査のルールそのものは、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>
をこれは、あなたが正しい –
(のDataContextを継承していないようだ)結合結果は常にnullで、動作するようには思えません。 ValidationRuleはビジュアルツリーの一部ではないため、DataContextを継承しません。問題とその解決方法を説明している素敵な記事があります。[こちら](http://www.codeproject.com/KB/WPF/AttachingVirtualBranches.aspx)、[ここ](http://www.codeproject.com/KB/) WPF/ArtificialInheritanceCxt.aspx)。 –