DataTemplateSelector проблема - PullRequest
       12

DataTemplateSelector проблема

0 голосов
/ 04 февраля 2011

В моем проекте Silverlight мне нужно было использовать DataTemplateSelector. Я нашел способ реализовать это (поскольку его нет в платформе) здесь: http://www.codeproject.com/KB/silverlight/SLTemplateSelector.aspx

Этот метод работал правильно в других местах моего кода, но на этот раз он не работает. Проблема в том, что 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);
    }
}

1 Ответ

1 голос
/ 04 февраля 2011

Так глупо ... Я возьму оправдание, это пятница ...

Проблема заключалась в том, что значение, связанное со списком, не было коллекцией ...

Вы можете начать бросать камни ...

...