質問

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

この方法は私のコードの他の場所で正しく動作していますが、今回は機能しません。問題は、テンプレートセレクターが呼び出されないことです(私はコンストラクターにブレークポイントを入れようとさえしましたが、それは決してヒットしませんでした)。私のコードに問題が見えますか?デバッグコンバーターを使用しましたが、 ListBox's 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);
    }
}
役に立ちましたか?

解決

だから愚かだ...私は金曜日だという言い訳をします...

問題は、リストボックスに縛られた値がコレクションではなかったことでした...

あなたは石を投げ始めるかもしれません...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top