Пользовательский стиль списка Silverlight - PullRequest
0 голосов
/ 18 декабря 2010

Я определил стиль в моем файле ресурсов, как показано ниже

   <Style x:Name="ListBoxStyle" TargetType="ListBox" >
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ListBox">                    
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding Name,Mode=TwoWay}" 
                               Margin="5" 
                               Foreground="Red">
                    </TextBlock>
                    <TextBlock Text="{Binding Age,Mode=TwoWay}" 
                               Margin="5">
                    </TextBlock>
                </StackPanel>
            </ControlTemplate>
        </Setter.Value>
    </Setter>    
</Style>

Я в растерянности относительно того, что поместить сюда в шаблоне данных

<ListBox x:Name="MyList" ItemsSource="{Binding }">
    <ListBox.ItemTemplate>
        <DataTemplate>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Я пытался использовать

<ContentPresenter Style="{StaticResource ListBoxStyle}"></ContentPresenter> 

и даже

<ContentControl Style="{StaticResource ListBoxStyle}"></ContentControl>`

но получил эту ошибку

Не удалось присвоить свойству 'System.Windows.FrameworkElement.Style'.

Что я могу поставить между тегами DataTemplate, если я хочу предоставить собственный стиль?

1 Ответ

0 голосов
/ 18 декабря 2010

Попробуйте:

<ListBox x:Name="MyList" ItemsSource="{Binding }">
    <ListBox.ItemTemplate>
        <DataTemplate>
<StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding Name,Mode=TwoWay}" 
                               Margin="5" 
                               Foreground="Red">
                    </TextBlock>
                    <TextBlock Text="{Binding Age,Mode=TwoWay}" 
                               Margin="5">
                    </TextBlock>
                </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Эта шпульда решит вашу проблему.

Если вы определяете стиль, вы определяете, как выглядит ListBox (Background, Foreground, ...). Вы можете получить стиль по умолчанию здесь: http://msdn.microsoft.com/en-us/library/cc278062(v=vs.95).aspx

ItemTemplate (это DataTemplate) определяет, как выглядит представление данных одного элемента списка (вы используете привязки и т. Д.).

Если вы хотите определить стиль для отдельных элементов, таких как MouseOver, Focussed, ... вы пишете стиль для ListBoxItems. Вы можете добавить его в список через ItemContainerStyle.

<ListBox ItemContainerStyle="{StaticResource YourResourceKey}"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...