修改后的列表框抛出异常

时间:2011-04-02 01:56:19

标签: c# wpf listbox listboxitem

我修改了Change the Selected Color Listbox问题中提到的Listbox,当我选择项目异常时抛出。它读取

'{DependencyProperty.UnsetValue}' is not a valid value for property 'Background'.

我做错了什么

用法XMAL

   <ListBox ItemContainerStyle="{StaticResource ListBoxItemStyle1}"  Width="300" Height="519" Name="listFriends" HorizontalAlignment="Left" VerticalAlignment="Center" >
     <ListBox.Items>
       <StackPanel Width="289" Orientation="Horizontal"  >
         <Image Margin="0,0,4,0" Height="50" Width="50" Source="{Binding Picture}" />
         <my:RibbonCheckBox Label="test" IsChecked="{Binding IsChecked}"/>
       </StackPanel>
       <StackPanel Width="289" Orientation="Horizontal"  >
          <Image Margin="0,0,4,0" Height="50" Width="50" Source="{Binding Picture}" />
          <my:RibbonCheckBox Height="20" Label="test" IsChecked="{Binding IsChecked}" Foreground="White" />
        </StackPanel>
        <StackPanel Width="289" Orientation="Horizontal"  >
           <Image Margin="0,0,4,0" Height="50" Width="50" Source="{Binding Picture}" />
           <my:RibbonCheckBox Height="20" Label="test" IsChecked="{Binding IsChecked}" Foreground="White" />
        </StackPanel>
     </ListBox.Items>
</ListBox>

我修改了样式

                      

<Style x:Key="ListBoxItemStyle1" TargetType="{x:Type ListBoxItem}">
    <Setter Property="Background" Value="Transparent"/>
    <Setter Property="HorizontalContentAlignment" Value="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
    <Setter Property="VerticalContentAlignment" Value="{Binding VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
    <Setter Property="Padding" Value="2,0,0,0"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ListBoxItem}">
                <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" 
        BorderThickness="{TemplateBinding BorderThickness}" 
        Background="{TemplateBinding Background}" 
        Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true" CornerRadius="10"
        >
                    <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsSelected" Value="true">
                        <Setter Property="Background" TargetName="Bd" Value="{StaticResource GrBrush}"/>
                        <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
                    </Trigger>

                    <MultiTrigger>
                        <MultiTrigger.Conditions>
                            <Condition Property="IsSelected" Value="true"/>
                            <Condition Property="Selector.IsSelectionActive" Value="false"/>
                        </MultiTrigger.Conditions>
                        <Setter Property="Background" TargetName="Bd" Value="{StaticResource GradientBrush}"/>
                       <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
                    </MultiTrigger>
                    <Trigger Property="IsEnabled" Value="false">
                        <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                    </Trigger>
                </ControlTemplate.Triggers>                        
            </ControlTemplate>                    
        </Setter.Value>                
    </Setter>            
</Style>

1 个答案:

答案 0 :(得分:0)

问题是我宣布了

 <LinearGradientBrush x:Key="GrBrush" EndPoint="0.5,1" StartPoint="0.5,0">
            <GradientStop Color="#FF6BB9E8" Offset="0" />
            <GradientStop Color="#541882CE" Offset="1" />
        </LinearGradientBrush>

一样使用
<Setter Property="Background" TargetName="Bd" Value="{StaticResource GradientBrush}"/>

与GrBrush和使用情况不同,这就是发生错误的原因