如何在 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 中创建自定义列表的主要内容,如果未能解决你的问题,请参考以下文章

如何在 GraphQL 中创建自定义对象列表

在 SQL Server 中创建自定义日期范围列表以便于使用

如何在android中创建自定义导航抽屉

在片段中创建自定义列表视图时出错。必需的活动,找到的片段

在片段中创建自定义列表视图时出错所需活动,找到片段

如何在 laravel 中创建自定义关系?