問題が1つあります。私は退院している。小道具List型の..添付された依存関係のタイプ(リスト<T>)問題
public const string ValidationRulesPropertyName = "ValidationRules";
public static List<ValidationRule> GetValidationRules(DependencyObject obj)
{
return (List<ValidationRule>)obj.GetValue(ValidationRulesProperty);
}
public static void SetValidationRules(DependencyObject obj, List<ValidationRule> value)
{
obj.SetValue(ValidationRulesProperty, value);
}
public static readonly DependencyProperty ValidationRulesProperty = DependencyProperty.RegisterAttached(
ValidationRulesPropertyName,
typeof(List<ValidationRule>),
typeof(CustomGrid),
new PropertyMetadata(new List<ValidationRule>()));
そして今、私は私のカスタムグリッド内のいくつかのテキストボックスを設定し、ValidationRules
<Grid>
<TextBox x:Name="txt1">
<ValidationRules>
<Validation:SomeValidationRule/>
</ValidationRule>
</TextBox>
<TextBox x:Name="txt2"/>
</Grid>
オクラホマの1つのリスト内の場合。ここで問題は、いくつかの要素のルールのリストを取得しようとするときです。txt1とtxt2のインスタンスがある場合、検証ルールを取得すると、両方ともSomeValidationRuleのインスタンスが返されます。
Grid.GetValidationRules(txt1Instance);
と
Grid.GetValidationRules(txt2Instance);
リターン同じリスト。
Grid.GetValidationRules(new TextBox());
を試す場合でも、私は、リスト内の唯一のalementようSomeValidationRuleと同じリストを取得します。だからそれは奇妙です。私は手動でいくつかの要素にリストを設定する場合、その要素は、私が設定したリストを持っている他のすべての要素は、私はtxt1のxamlで設定したリストを持っています。
ありがとう!
あなたは)(Grid.GetValidationRulesのコードを投稿することができますか? –
'PropertyMetadata(new List)'は一度だけ実行されるため、すべてのルールが追加される「新しいリスト」が1つだけ作成されるからです。私には答えはありませんが、それが現在の行動が起こっている理由です。 –