2011-06-24 21 views
2

私は何を持っていることは、XAMLでのDataTemplateを実装するカスタムコントロール、次のとおりです。バインドするDataTemplate CustomControl問題へ

<DataTemplate x:Key="Templat"> 
    <StackPanel> 
     <TextBlock Text="Sample Text" /> 
     <TextBlock Text="{Binding Surname}" /> 
    </StackPanel> 
</DataTemplate> 

とカスタムコントロール:

<local:MyControl x:Name="MyControl1" 
     ItemTemplate="{StaticResource Templat}" Margin="0,0,-24,8"/> 

generic.xaml(私のカスタムコントロールでライブラリ):

<ControlTemplate TargetType="local:MyControl"> 
    <Canvas Name="LayoutRoot" Height="{TemplateBinding Height}" 
      Width="{TemplateBinding Width}" 
      Background="{TemplateBinding Background}" 
      CacheMode="BitmapCache"> 

     <Canvas Name="ItemsHost" Margin="10,185,0,0" Height="615" 
       Width="{TemplateBinding Width}" CacheMode="BitmapCache"> 
      <local:CustomItem x:Name="Item1" 
        ContentTemplate="{TemplateBinding ItemTemplate}" /> 
      <local:CustomItem x:Name="Item2" 
        ContentTemplate="{TemplateBinding ItemTemplate}" /> 
     </Canvas> 
    </Canvas> 
</ControlTemplate> 

私は間違っていますか?

私はいくつかのカスタムコンテンツコントロールを内部に持つカスタムアイテムコントロールを作成しました。私はそれらのすべてに同じコンテンツテンプレートを持たせたいので、コンテンツテンプレートを親コントロールの定義されたitemtemplateにバインドしました。

私の問題は、コントロールでは「サンプルテキスト」テキストでテキストブロックが表示されますが、バインドされた値では表示されません。私はDataTemplateをが'{Binding Surname}'表現をミス正しい渡されていたよう

のDataContext(Personクラス)が見えます。DataContext = new Person() { Surname="Johnson" }ようまたは経由XAML。それらのどれも働いていない(分離コードでのDataContextを指定しようとしているが、渡された。あなたが任意のアイデアを持っているものを間違っていることができますか?それは親から

答えて

4

がDataTemplateの中のコントロールのDataContextが継承されていません。あなたの場合には、TemplatですべてがCustomItemのとMyControlとは異なるのDataContextを持つことになりますので。

のDataContextをするためにDataTemplateは、関連付けられたContentControlまたはContentPreseのContentプロパティから取得します。 nter。だから、あなたのケースでは、あなたがやった場合は、この:

<local:CustomItem x:Name="Item1" Content="{Binding}" ContentTemplate="{TemplateBinding ItemTemplate}" /> 

が次にあなたがMyControlとののDataContextを設定することができ、そしてそれはあなたのDataTemplateに渡さなるだろう。

しかし、私の見た目からは、あなたのMyControlはItemsControlでなければなりません(説明はhere)。

+0

私のために完全に働いた:最初の答えはあなたのために動作しない場合は、このリソースを確認してください。ありがとうございました! – justPatrick

関連する問題