2012-04-16 64 views
1

在下面的代碼,如果我改變爲什麼我不能在邊界上使用AlternationCount?

<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> 

找不到靜態成員的類型「BackgroundProperty「ContentPresenter」

回答

3

的問題是,AlternationIndex被放置在容器上(在這種情況下爲ListBoxItem),而不是其中的一些小孩。您可以通過使用綁定到AlternationIndexListBoxItem代替DataTrigger小號解決這個問題:

<DataTrigger Binding="{Binding Path=(ItemsControl.AlternationIndex), RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}}" Value="0"> 
    <Setter Property="Background" Value="LightBlue"/> 
</DataTrigger> 
+0

感謝@Kent Boogaart,你知道如何解決這個問題......上找不到的靜態成員「BackgroundProperty」鍵入'ContentPresenter' – 0x4f3759df 2012-04-16 20:14:37

相關問題