为什么我不能在边框上使用AlternationCount?

时间:2012-04-16 19:11:50

标签: wpf xaml

如果我改变

,请在下面的代码中
  <Style  TargetType="{x:Type Border}">

  <Style  TargetType="{x:Type ListBoxItem}">

它会为我的整个listboxitem着色正确的颜色。但我只想打边框背景

  <ListBox  x:Name="FilteredMessagesListBox" BorderThickness="0" ScrollViewer.HorizontalScrollBarVisibility="Disabled" HorizontalContentAlignment="Stretch"  SelectionMode="Extended" Background="Transparent" AlternationCount="2">
                        <ListBox.Resources>
                            <Style  TargetType="{x:Type Border}">
                                <Style.Triggers>
                                    <Trigger Property="ItemsControl.AlternationIndex" Value="0">
                                        <Setter Property="Background" Value="LightBlue"></Setter>
                                    </Trigger>
                                    <Trigger Property="ItemsControl.AlternationIndex" Value="1">
                                        <Setter Property="Background" Value="LightGreen"></Setter>
                                    </Trigger>
                                </Style.Triggers>
                            </Style>

                        </ListBox.Resources>

                        <ListBox.ItemTemplate >
                            <DataTemplate>
                                <DockPanel Margin="0,0,0,3">
                                    <Button x:Name="AttachmentImageButton" Click="AttachmentImageButton_Click" DockPanel.Dock="Bottom" MaxWidth="200" MaxHeight="200" HorizontalContentAlignment="Center" Visibility="{Binding ElementName=AttachmentImageButton, Converter={StaticResource cImageAttachmentToVisible}}" >
                                        <Image Source="{Binding Path=Attachment}" x:Name="AttachmentImage" />
                                    </Button>
                                    <Button x:Name="AttachmentButton" Click="AttachmentButton_Click" DockPanel.Dock="Right" Visibility="{Binding ElementName=AttachmentButton, Converter={StaticResource cAttachmentToVisible}}" >
                                        <Image Source="/MobilWPF;component/Resources/Images/PaperClip/PaperClip.jpg" Width="20" Height="20"/>
                                    </Button>

                                    <TextBlock Text="{Binding Converter={StaticResource cGetInstantMessageHeader}}" Width="120" TextWrapping="Wrap" HorizontalAlignment="Left"  Background="Transparent" FontSize="10" DockPanel.Dock="Left"/>

                                    <Border DockPanel.Dock="Left"  HorizontalAlignment="Stretch" CornerRadius="5">
                                        <DockPanel>
                                            <TextBlock Margin="5,0,0,0" Text="{Binding Path=Message}" TextWrapping="Wrap" DockPanel.Dock="Left" HorizontalAlignment="Left" Background="Transparent" FontSize="12"/>
                                        </DockPanel>
                                    </Border>
                                </DockPanel>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>

我试过了:

  <Border DockPanel.Dock="Left"  HorizontalAlignment="Stretch" CornerRadius="5">
                                        <Border.Triggers>
                                            <DataTrigger Binding="{Binding Path=(ItemsControl.AlternationIndex), RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}}" Value="0">
                                                <Setter Property="Background" Value="LightBlue"/>
                                            </DataTrigger>
                                            <DataTrigger Binding="{Binding Path=(ItemsControl.AlternationIndex), RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}}" Value="1">
                                                <Setter Property="Background" Value="LightGreen"/>
                                            </DataTrigger>
                                        </Border.Triggers>
  <DockPanel>
                                            <TextBlock Margin="5,0,0,0" Text="{Binding Path=Message}" TextWrapping="Wrap" DockPanel.Dock="Left" HorizontalAlignment="Left" Background="Transparent" FontSize="12"/>
                                        </DockPanel>
                                    </Border>

在'ContentPresenter'

类型上找不到静态成员'BackgroundProperty'

1 个答案:

答案 0 :(得分:3)

问题是AlternationIndex是在容器上设置的(在这种情况下是ListBoxItem),而不是在其中的某个子容器上。您可以使用绑定到父DataTrigger上的AlternationIndex的{​​{1}}来解决此问题:

ListBoxItem