1

私が変更した場合、以下のコードで

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

  <Style  TargetType="{x:Type 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」が見つかりません

4

1 に答える 1

3

問題は、コンテナー内の子ではなくAlternationIndex、コンテナー (ListBoxItemこの場合は s) に設定されていることです。代わりに親にDataTriggerバインドする s を使用することで、これを解決できます。AlternationIndexListBoxItem

<DataTrigger Binding="{Binding Path=(ItemsControl.AlternationIndex), RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}}" Value="0">
    <Setter Property="Background" Value="LightBlue"/>
</DataTrigger>
于 2012-04-16T19:49:42.757 に答える