如何在 Blend 中创建自定义列表
Posted
技术标签:
【中文标题】如何在 Blend 中创建自定义列表【英文标题】:How to create a custom list in Blend 【发布时间】:2016-10-21 20:46:34 【问题描述】:我是 Blend 和 WPF 的新手,我想要一个具有 ListBox 类型属性但具有我自己的自定义项的控件。本质上,我希望每个项目都是带有标签的圆角矩形。我想到的第一种方法是使用 UserControl 和 StackPanel,尽管我想不出如何告诉程序哪些对象具有焦点。出于这个原因,我认为我可以使用 ListBox 并因此制作自定义 ListBoxItem,但显然只有矩形可以转换为控件,丢失标签。任何指针都会有很大帮助。
【问题讨论】:
【参考方案1】:您可以使用 ListBox,并且不仅限于矩形而不是标签。
使用标准的 ListBox,让 ListBox.ItemTemplate 复杂到你喜欢的程度。如果您需要将一堆控件叠加在一起,您可以从 Canvas 或 Grid 控件开始,然后从那里开始。
或者,您可以将项目模板设为单个标签控件(如果项目在逻辑上表现为标签),并使用 ControlTemplate 完全重做为这些标签呈现的可视化树。
参考资料:
ItemTemplate
ControlTemplate
这是一个简单的例子。
XAML:
<Grid>
<ListView ItemsSource="Binding Path=Labels">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Rectangle Fill="CadetBlue" RadiusX="10" RadiusY="10" SnapsToDevicePixels="True">
</Rectangle>
<Label Content="Binding" Padding="10"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
“视图模型”:
public IEnumerable<string> Labels
get return new string[] "Foo", "Bar", "Baz" ;
结果:
【讨论】:
以上是关于如何在 Blend 中创建自定义列表的主要内容,如果未能解决你的问题,请参考以下文章