Пользовательский стиль Silverlight Listbox

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

   <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, если я хочу создать собственный стиль?


person user20358    schedule 18.12.2010    source источник
comment
Чего ты хочешь достичь? Вы определили стиль для ListBox и пытаетесь применить его к ContentPresenter и ContentControl. Это неправильно.   -  person decyclone    schedule 18.12.2010
comment
Я хочу определить стиль для списка в другом файле ресурсов, а в моем page.xaml просто сослаться на этот стиль. Каков правильный путь?   -  person user20358    schedule 18.12.2010


Ответы (1)


Пытаться:

<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 (фон, передний план, ...). Вы можете получить стиль по умолчанию здесь: http: //msdn.microsoft.com/en-us/library/cc278062 (v = vs.95) .aspx

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

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

<ListBox ItemContainerStyle="{StaticResource YourResourceKey}"/>
person TerenceJackson    schedule 18.12.2010