WPF ListBox 一些小知识点

时间:2021-10-27 08:29:49

页面代码:

<Grid Grid.Row="0" Grid.Column="2">
<ListBox x:Name="lvStep" Style="{StaticResource StepTemp}" Width="830" HorizontalAlignment="Left" ItemsSource="{Binding DataSteps,Mode=OneWay}" MouseLeftButtonUp="lvStep_MouseLeftButtonUp" TouchUp="lvStep_TouchUp">
</ListBox>

资源样式代码:

<Style TargetType="ListBox" x:Key="StepTemp">
<Style.Resources>
<SolidColorBrush Color="Transparent" x:Key="{x:Static SystemColors.HighlightBrushKey}"/>
</Style.Resources>
<Setter Property="Foreground" Value="#FFDEDEDD"></Setter>
<Setter Property="BorderBrush" Value="#00000000"></Setter>
<Setter Property="Background" Value="#00000000"></Setter>
<Setter Property="FontSize"
Value="24"/>
<Setter Property="FontFamily" Value="Microsoft YaHei UI"></Setter>
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Orientation="Horizontal" Height="45" >
<TextBlock Text="{Binding SerialNum}" Foreground="{Binding TextBrush}" VerticalAlignment="Center"></TextBlock>
<TextBlock Foreground="{Binding TextBrush}">.</TextBlock>
<TextBlock Text="{Binding StepDescription}" Foreground="{Binding TextBrush}" FontSize="18" VerticalAlignment="Center">
</TextBlock>

</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>

1.Style="{StaticResource StepTemp}"

2.TargetType="ListBox" x:Key="StepTemp"

可以在资源样式代码中设置数据模板,没必要把数据模板写到页面代码中。

<SolidColorBrush Color="Transparent" x:Key="{x:Static SystemColors.HighlightBrushKey}"/> 设置点击行背景为透明色,当然也可以设置其他背景色,和字体颜色。

Foreground="{Binding TextBrush}" 数据模板中的控件 绑定这个TextBrush属性。就可以在代码中设置,然后驱动页面字体颜色改变。

这种带数据模板的,<StackPanel Orientation="Horizontal" Height="45" >可以设置数据的每一行的内容为横向显示。

想要所有行都横向显示:

<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<WrapPanel IsItemsHost="True"></WrapPanel>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>

ItemsPanel=》ItemsPanelTemplate=》WrapPanel IsItemsHost="True"

先写这么多吧,遇到问题就写点。