Шаблон выбранного элемента SurfaceListBox - PullRequest
2 голосов
/ 25 февраля 2011

Я использую Microsoft Surface SDK, и у меня возникают проблемы со стилем выбранного элемента.

Пока у меня есть:

<s:SurfaceListBox Name="listy" Background="Transparent"
                    FontSize="50" Foreground="White" BorderBrush="White"
                    HorizontalContentAlignment="Center"
                    Margin="5,5,5,100" SelectionMode="Single">
    <s:SurfaceListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding}" Foreground="White" />
        </DataTemplate>
    </s:SurfaceListBox.ItemTemplate>
    <s:SurfaceListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ListBoxItem}">
                        <ContentPresenter HorizontalAlignment="Center" />
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsSelected" Value="True">
                                <Setter Property="Background" Value="Grey" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </s:SurfaceListBox.ItemContainerStyle>
</s:SurfaceListBox>

Но это не удается, и нет никаких учебных пособий дляэто вообще в интернете - я искал часами.

Спасибо за любую помощь!

1 Ответ

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

Я думаю, что проблема в том, что нет ничего, что использует этот фон. Вы можете обернуть ContentPresenter в Border и нацелить его в Trigger

<ControlTemplate TargetType="{x:Type s:SurfaceListBoxItem}">
    <Border x:Name="Border">
        <ContentPresenter HorizontalAlignment="Center" />
    </Border>
    <ControlTemplate.Triggers>
        <Trigger Property="IsSelected" Value="True">
            <Setter TargetName="Border" Property="Background" Value="Gray"/>
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>
...