Silverlight で添付された依存関係プロパティに TypeConverter を設定するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/3584536

質問

私の目標は、これを XAML で記述できるようにすることです。

<Grid>
    <Rectangle Fill="AliceBlue"
            myCore:MyTimePanel.BeginningDate="03/03/2010"
            />
</Grid>

問題 :Silverlight XAML は文字列から DateTime を解析できません。したがって、実行時に「その文字列からDateTimeを作成できません」というXamlParseExceptionが発生します。

単純なDependencyPropertyを使用する場合、getter/setterにTypeConverterAttributeを追加するだけで機能します。こんな感じ(アイデアは ここ):

[TypeConverter(typeof(DateTimeTypeConverter))]
public DateTime MyDate
{
    get { return (DateTime)GetValue(MyDateProperty); }
    set { SetValue(MyDateProperty, value); }
}

しかし、 添付 DP、ゲッター/セッターはありません。XAML で日付文字列を記述できるようにするにはどうすればよいですか?

ありがとう !

役に立ちましたか?

解決

ただし、添付プロパティには Get アクセサーがあります。試してみましたか? Get アクセサーに型コンバーターを配置する?

バージョン固有のリンクについては申し訳ありませんが、これには関連情報が含まれています。そのページから:

3.値の型として機能する型に、型レベルの TypeConverter を帰属させることができます。これにより、型のすべての値の文字列変換が可能になります。詳細については、「TypeConverters と XAML」を参照してください。

4.Get アクセサー メソッドにプロパティ レベルの TypeConverter を割り当てることができます。これにより、添付プロパティの文字列変換が可能になります。TypeConverterAttribute を Set アクセサー メソッドではなく Get アクセサー メソッドに適用するのは直感的ではないように思えるかもしれませんが、XAML プロセッサはここで添付プロパティの型変換情報 (存在する場合) を見つけることを期待します。詳細については、「TypeConverters と XAML」を参照してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top