在默认情况下,
ListBox
的子项目显示类似于默认的
StackPanel
,在水平方向为
Strench
垂直方向进行堆叠.
而有时候,为了控制子元素的布局方式,需要自定义
ListBox
的内部面板,例如为了实现下面的效果
可以看到,上面采用的是双列布局,实际上用的是
UniformGrid
控件作为
ListBox
的内部面板,因此,对于绑定的数据集合,就相当于是在一个
UniformGrid
中进行放置,唯一区别的是,每个子元素的范围是其实际的占用区域,在其外部还有许多留白,这部分相当于是
ListBox
的子区域点击外侧的空白处也是可以触发
SelectedValueChanged
相关的
XAML
代码如下
<ListBox ItemsSource="{Binding Students}">
自定义 ListBox 的控件面板在默认情况下,ListBox 的子项目显示类似于默认的 StackPanel,在水平方向为 Strench 垂直方向进行堆叠.而有时候,为了控制子元素的布局方式,需要自定义 ListBox 的内部面板,例如为了实现下面的效果可以看到,上面采用的是双列布局,实际上用的是 UniformGrid 控件作为 ListBox 的内部面板,因此,对于绑定的数据集合,就相当于是在一个 UniformGrid 中进行放置,唯一区别的是,每个子元素的范围是其实际的占用区域,在其外部
表格通常可以用GridView显示,但是GridView的使用方法有一些复杂,有时只想显示简单的图片或文字时,使用
ListBox
就会方便很多,而且
ListBox
也支持表格
布局
的拓展。
一、如何实现?
ListBox
中
有个属性叫
Items
Panel
,是元素的容器。我们可以将这个属性设为自己的容器,一般使用Wrap
Panel
即可实现表格
布局
的效果,给Wrap
Panel
设置
一个宽度,只要超过宽度的元素就会换行。
示例代码如下:
<
ListBox
.
Items
代码如下:
<Window x:Class="
ListBox
ScrollTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/
xaml
/presentation"
C#
数学类库使用心得(不定期更新)使用LU分解求解线性方程组Ax=b的解(2019.3.17)
使用LU分解求解线性方程组Ax=b的解(2019.3.17)
首先创建一个矩阵A,矩阵数据可以使用二维数组作为源数据,使用DenseMatrix.OfArray(double[,] array)进行创建
double[,] A =
{3, 1.4,0,0 },
{1.4, 2, 2....
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type
ListBox
Item
}">
<Border Name="border"
Padding="5"
Margin="2"
Background="LightBlue"
BorderBrush="DarkBlue"
BorderThickness="1">
<ContentPresenter />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected"
Value="True">
<Setter TargetName="border"
Property="Background"
Value="DarkBlue" />
<Setter TargetName="border"
Property="Foreground"
Value="White" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</
Style
>
</
ListBox
.Resources>
<
ListBox
Item
>
Item
1</
ListBox
Item
>
<
ListBox
Item
>
Item
2</
ListBox
Item
>
<
ListBox
Item
>
Item
3</
ListBox
Item
>
</
ListBox
>
在这个样式
中
,我们使用了 ControlTemplate 控制了
ListBox
Item
的外观。我们将
ListBox
Item
包装在 Border
中
,并
设置
了一些属性,如 Padding、Margin、Background、BorderBrush 和 BorderThickness。然后,我们使用 ControlTemplate.Triggers
中
的触发器来
设置
选定项的外观。
您可以根据需要更改这些属性,以满足您的需求。