2011-12-21 17 views
0

その内部のイメージを使用するカスタムWPFコントロールを作成しています。このカスタムコントロールは他のものと同じようになり、xamlで宣言されます。プロパティを設定するxamlのコントロール

<Image Source="http://foo.com/bar.jpg"></Image> 

私は何をしたいことは、次の使用を持っている:私は、Imageコントロールを使用しているときにこれを行う、ほとんど同じよう内部の画像のソースを指定するには、この制御のためのパブリックプロパティを持つようにしたいです私のコントロール:内部で、その後

<MyCustomControl ImageSource="http://foo.com/bar.jpg"></MyCustomControl> 

そして、のようなもの:

私はこの仕事を得るために私の分離コードに必要ですセットアップのどのような
<UserControl class="MyCustomControl" ...> 
    <Image Source="{Binding Imagesource}"></Image> 
</UserControl> 

?私はいくつかのことを試しましたが、動かすことはできません。あなたが必要なもの

+0

「ImageSource」の作成方法を尋ねていますか?もしそうなら、あなたはDependencyPropertyを探しています。または、DependencyPropertyをカプセル化されたコントロールにリンクする方法を尋ねていますか?好奇心から逃れたばかりの – MBirchmeier

答えて

2

UserControlsDataContextを使用していない、またはElementNameRelativeSourceを使用するか、タイプImageSourceと適切な結合のdependency propertyです。

<UserControl Name="control" x:Class="MyCustomControl" ...> 
    <Image Source="{Binding ImageSource, ElementName=control}"/> 
</UserControl> 

<UserControl x:Class="MyCustomControl" ...> 
    <Image Source="{Binding ImageSource, 
          RelativeSource={RelativeSource AncestorType=UserControl}}"/> 
</UserControl> 
+0

- ユーザーコントロールでDataContextを使用すると何がうまくいくのですか? –

+1

@Dmitry:通常、明示的に設定されていない限り、DataContextが継承されることを期待しています。問題は、DataContextがUserControlに設定されていてもインスタンスで*表示されず、別のDataContextが予期せず失敗することです。 –

+0

奇妙なことに、これは私のSilverlightアプリケーションでは機能しましたが、WPFアプリケーションでは機能しませんでした。どんな考え? – PhilBrown

関連する問題