我是Blend和WPF的新手,我想拥有一个具有ListBox属性的控件,但是我有自己的自定义项。基本上,我希望每个项目都是带有标签的圆角矩形。我想到的第一种方法是使用UserControl和StackPanel,虽然我无法想到如何告诉程序哪个对象有焦点。出于这个原因,我认为我可以使用ListBox并因此创建一个自定义ListBoxItem,但显然只有矩形可以转换为控件,丢失标签..任何指针都将是一个很大的帮助。
答案 0 :(得分:0)
您可以使用ListBox,而不仅限于矩形而不是标签。
使用标准ListBox,并使ListBox.ItemTemplate尽可能复杂。如果你需要将一堆控件叠加在一起,你可以从Canvas或Grid控件开始,然后从那里开始。
或者,您可以将项模板设置为单个Label控件(如果逻辑上该项表现为标签),并使用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>
“ViewModel”:
public IEnumerable<string> Labels
{
get { return new string[] { "Foo", "Bar", "Baz" }; }
}
结果: