Silverlight ItemTemplate привязка - PullRequest
       1

Silverlight ItemTemplate привязка

2 голосов
/ 15 октября 2010

Я хочу установить ItemTimplate в соответствии с некоторым свойством. Я только что создал разметку, где я установил ItemTemplate так:

<controls:Panorama Title="Some Title" ItemsSource="{Binding Modules}" ItemTemplate="{Binding Id, Converter={StaticResource ControlTemplateConverter}}">

    <controls:Panorama.Background>
        <ImageBrush ImageSource="PanoramaBackground.png"/>
    </controls:Panorama.Background>

</controls:Panorama>

И реализовать ControlTemplateConverter следующим образом:

public class ControlTemplateConverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        StringBuilder sbTemp = new StringBuilder();
        sbTemp.Append("<DataTemplate ");
        sbTemp.Appen("xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' ");
        sbTemp.Append("xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' ");
        sbTemp.Append("<StackPanel>");
        sbTemp.Append("<TextBlock Text=\"News News\" />");
        sbTemp.Append("</StackPanel>");
        sbTemp.Append("</DataTemplate>");
        return (DataTemplate)XamlReader.Load(sbTemp.ToString());
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

Я зарегистрировал конвертер:

<UserControl.Resources>
    <converter:ControlTemplateConverter x:Key="ControlTemplateConverter" />
</UserControl.Resources>

Но когда я устанавливаю точку останова в ControlTemplateConverter.Convert, она никогда не останавливается в отладке. ItemSource загружается каждый раз. В чем дело? Спасибо.

1 Ответ

0 голосов
/ 15 октября 2010

Я подозреваю, что привязка не может найти свойство Id в том же DataContext, в котором найдено свойство Modules. Следовательно, нет вызова для конвертера. Вероятно, это связано с тем, что Id на самом деле является свойством каждого Module и каким-то образом вы представляете, что привязка ItemTemplate разрешается для каждого элемента. Это не так. У вас есть один шаблон, который применяется ко всем элементам в ItemsSource.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...