2013-06-02 84 views
0

我试图更改dataTemplate中的列表项外观,但我在更改所选项目外观时遇到了问题。我发现这样一个问题:Change WPF DataTemplate for ListBox item if selected无法更改wpf中的选定列表项样式

,我试图创建类似的代码作为答案:

<DataTemplate x:Key="NoteTemplate"> 
     <Border Margin="5" BorderThickness="1" BorderBrush="Transparent" Background="#F3EBC2" CornerRadius="4"> 
      <Grid Margin="3" Width="395" MaxHeight="40"> 
       <Grid.RowDefinitions> 
        <RowDefinition /> 
        <RowDefinition/>       
       </Grid.RowDefinitions> 
       <Grid Row="0" > 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition/> 
         <ColumnDefinition/> 
        </Grid.ColumnDefinitions> 
        <TextBlock Grid.Column="0" FontSize="15" FontFamily="Consolas" FontWeight="Bold" Text="{Binding Path=tytul}"/> 
        <TextBlock Grid.Column="1" FontSize="13" FontFamily="Consolas" FontStyle="Italic" HorizontalAlignment="Right" Text="{Binding Path=data_dodania}"/> 
       </Grid> 
       <TextBlock Grid.Row="1" FontSize="13" FontFamily="Consolas" Text="{Binding Path=tresc}"/> 
      </Grid> 
     </Border> 
    </DataTemplate> 



    <Style TargetType="{x:Type ListBoxItem}" x:Key="ListBoxItem"> 
     <Setter Property="ContentTemplate" Value="{StaticResource NoteTemplate}" /> 
     <Style.Triggers> 
      <Trigger Property="IsSelected" Value="True"> 
       <Setter Property="ContentTemplate" Value="{StaticResource NoteTemplate}" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 

(我把同样的模板触发器只是为了检查是否正常工作)

<ListBox Name="listBoxNotatki" Margin="10" ItemContainerStyle="{StaticResource ListBoxItem}" Background="Beige" BorderBrush="Orange" BorderThickness="3"/> 

但后来我得到这个错误:

“无法投型‘MS.Internal.NamedObject’的对象键入‘System.Windows.DataTemplate’”

当我将StaticResource更改为DynamicResorce时,我摆脱了这个错误,但是我的样式中的触发器不起作用(所选项目看起来就像在开始处)。

回答

0

列表框控件将ItemTemplate设置为“NoteTemplate”。 列表框是知道它的SelectedItem

在你的情况,我会写一DataTemplateSelector和使用它的列表框ItemTemplateSelector在之前和以后再看。

这篇文章做得很好解释它: http://codepb.com/datatemplateselector-in-xaml-versatile-xaml-controls/

+0

这个链接是死了,我的朋友。 –

+0

谢谢,我添加了一篇类似的文章。 – Xcalibur37

相关问题