私はカスタムコントロールを作成しています。 、私のC#ファイルで依存性プロパティを使用したイメージソースのバインド
<Image Source="{TemplateBinding Poster}" />
DependencyProperty
は次のとおりです:このカスタムコントロールはこのようにそれにイメージを持ってい
public static readonly DependencyProperty PosterProperty = DependencyProperty.Register(
nameof(Poster),
typeof(ImageSource),
typeof(MovieButton),
new UIPropertyMetadata(null));
public ImageSource Poster
{
get { return (ImageSource)GetValue(PosterProperty); }
set { SetValue(PosterProperty, value); }
}
今、私はXAMLで私のユーザーコントロールに次を追加することができます。Poster="Images/NoPoster.png"
コードのPoster = new BitmapImage(new Uri(@"pack://application:,,,/Images/NoPoster.png"))
すべて正常です。私が疑問に思うのは、ImageSource
の代わりにPoster
をBitmapImage
またはstring
と宣言できないのはなぜですか?
ありがとうございました。あなたの例は確かに働いていて、私が最初に何をしていたのか。文字列を設定することは、最初に 'Uri'に変換してから' BitmapImage'に変換するよりも簡単です。あなたは何をお勧めしますか? – Krowi
'string'はもちろん十分です。しかし、 'Uri'クラスによって行われた妥当性検査を利用したいかもしれません。コントロールのユーザーは、無効なURIを渡そうとすると例外が発生します。持つべき悪いことではありません。 – Clemens
これは少し話題になり始めていることは分かっていますが、 'Uri'の有効性チェックではどういう意味ですか? – Krowi