私のSilverlightプロジェクトでは、DataTemplateSelector
を使用する必要がありました。 私はこれを実装する方法を見つけました(フレームワークには存在しません)。http://www.codeproject.com/KB/silverlight/SLTemplateSelector.aspxDataTemplateSelectorの問題
このメソッドは、コードの他の場所でも正しく動作していますが、今回は機能しません。 問題は、TemplateSelectorが呼び出されないことです(コンストラクタにブレークポイントを置くことさえ試みましたが、決してヒットしませんでした)。私のコードで問題が見えますか?私はデバッグコンバータを使用して、ListBox
のItemsSource
が正しく設定されていることがわかりました。
ありがとうございます!
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);
}
}
'OnContentChanged'がブレークポイントを入れて呼び出されたことを確認できますか? – decyclone
私はそれをした、それは決して呼ばれていない...私は理解していない理由: - / – Shimrod