2011-02-04 2 views
0

私のSilverlightプロジェクトでは、DataTemplateSelectorを使用する必要がありました。 私はこれを実装する方法を見つけました(フレームワークには存在しません)。http://www.codeproject.com/KB/silverlight/SLTemplateSelector.aspxDataTemplateSelectorの問題

このメソッドは、コードの他の場所でも正しく動作していますが、今回は機能しません。 問題は、TemplateSelectorが呼び出されないことです(コンストラクタにブレークポイントを置くことさえ試みましたが、決してヒットしませんでした)。私のコードで問題が見えますか?私はデバッグコンバータを使用して、ListBoxItemsSourceが正しく設定されていることがわかりました。

ありがとうございます!

XAML:

<ListBox Name="DestinationsList" Grid.Column="2" ItemsSource="{Binding}"> 
<ListBox.ItemTemplate>  
    <DataTemplate> 
     <helper:TargetTemplateSelector Content="{Binding}"> 
      <helper:TargetTemplateSelector.FirstTemplate> 
       <DataTemplate> 
        <TextBlock Text="Test1" /> 
       </DataTemplate> 
      </helper:TargetTemplateSelector.FirstTemplate> 
      <helper:TargetTemplateSelector.SecondTemplate> 
       <DataTemplate> 
        <TextBlock Text="Test2" /> 
       </DataTemplate> 
      </helper:TargetTemplateSelector.SecondTemplate> 
     </helper:TargetTemplateSelector> 
    </DataTemplate> 
</ListBox.ItemTemplate> 
</ListBox> 

TemplateSelectorクラス:私はそれが金曜日の言い訳を取るよ...

public class TargetTemplateSelector : DataTemplateSelector 
{ 
    public DataTemplate FirstTemplate { get; set; } 
    public DataTemplate SecondTemplate { get; set; }   

    public override DataTemplate SelectTemplate(object item, DependencyObject container) 
    { 
     MyClass1 target = item as MyClass1; 

     if (target != null) 
     { 
      if (target.Profile is MyClass2) 
      { 
       return this.FirstTemplate; 
      } 
      else if (target.Profile is MyClass3) 
      { 
       return this.SecondTemplate; 
      } 
      else 
      { 
       throw new NotImplementedException(); 
      } 
     } 

     return base.SelectTemplate(item, container); 
    } 
} 
+0

'OnContentChanged'がブレークポイントを入れて呼び出されたことを確認できますか? – decyclone

+0

私はそれをした、それは決して呼ばれていない...私は理解していない理由: - / – Shimrod

答えて

1

だから、ダム...

問題は値が結合したことでしたリストボックスにはコレクションではありませんでした。

石を投げ始めるかもしれません...

関連する問題