Как установить SelectItem Foreground в LongListSelector - PullRequest
2 голосов
/ 27 марта 2012

я хочу установить передний план SelectItem с разным цветом, в LongListSelector Это мой xaml:

<toolkit:LongListSelector x:Name="locations" Background="Transparent" Margin="0"
                    GroupViewOpened="LongListSelector_GroupViewOpened"
                    GroupViewClosing="LongListSelector_GroupViewClosing" 
                    SelectionChanged="locations_SelectionChanged">
                <toolkit:LongListSelector.GroupItemsPanel>
                    <ItemsPanelTemplate>
                        <toolkit:WrapPanel Orientation="Horizontal"/>
                    </ItemsPanelTemplate>
                </toolkit:LongListSelector.GroupItemsPanel>
                <toolkit:LongListSelector.GroupItemTemplate>
                    <DataTemplate>
                        <Border Background="{Binding Converter={StaticResource GroupBackground}}" 
                                    Width="99" Height="99" Margin="6" IsHitTestVisible="{Binding HasItems}">
                            <TextBlock Text="{Binding Key}" 
                                    FontFamily="{StaticResource PhoneFontFamilySemiBold}"
                                    FontSize="48"
                                    Margin="8,0,0,0"
                                    Foreground="{Binding Converter={StaticResource GroupForeground}}"                                        
                                    VerticalAlignment="Bottom"/>
                            <Border.Projection>
                                <PlaneProjection RotationX="-60"/>
                            </Border.Projection>
                        </Border>
                    </DataTemplate>
                </toolkit:LongListSelector.GroupItemTemplate>
                <toolkit:LongListSelector.GroupHeaderTemplate>
                    <DataTemplate>
                        <Border Background="Transparent" Margin="12,8,0,8">
                            <Border Background="{StaticResource HighlightBrush}"    
                                        Padding="8,0,0,0" Width="62" Height="62"                 
                                        HorizontalAlignment="Left">
                                <TextBlock Text="{Binding Key}" 
                                        Foreground="#FFFFFF" 
                                        FontSize="48"
                                        FontFamily="{StaticResource PhoneFontFamilySemiLight}"
                                        HorizontalAlignment="Left"
                                        VerticalAlignment="Bottom"/>
                            </Border>
                        </Border>
                    </DataTemplate>
                </toolkit:LongListSelector.GroupHeaderTemplate>
                <toolkit:LongListSelector.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Margin="20,0">
                            <TextBlock Text="{Binding n}" Style="{StaticResource PhoneTextExtraLargeStyle}" 
                                       FontFamily="{StaticResource PhoneFontFamilySemiBold}" 
                                       Margin="12,5"/>
                        </StackPanel>
                    </DataTemplate>
                </toolkit:LongListSelector.ItemTemplate>
            </toolkit:LongListSelector>

LongListSelector без "ItemContainerStyle", я не знаю, как установить ресурсы стиля, как обычный listboxitem.

1 Ответ

1 голос
/ 28 марта 2012

Если вы измените свой ItemTemplate, чтобы использовать ContentControl вместо TextBlock, выбранный элемент будет использовать кисть акцентирования телефонов (убедитесь, что вы не устанавливаете цвет переднего плана для элемента управления контентом):

<toolkit:LongListSelector.ItemTemplate>
    <DataTemplate>
        <StackPanel Margin="20,0">
            <ContentControl Text="{Binding n}" Style="{StaticResource PhoneTextExtraLargeStyle}" 
                            FontFamily="{StaticResource PhoneFontFamilySemiBold}" 
                            Margin="12,5"/>
        </StackPanel>
    </DataTemplate>
</toolkit:LongListSelector.ItemTemplate>

Чтобы иметь возможность установить его на свой цвет, я переопределил конструктор для TemplatedListBoxItem и установил DefaultStyleKey: DefaultStyleKey = typeof(TemplatedListBoxItem); Затем я установил стиль для TemplatedListBoxItem, который соответствует стилю ListBoxItem в System.Windows.xaml, за исключением для другого цвета визуального состояния выбранного элемента.

...