C# 自动布局增加控件数量
我对WPF有点陌生,希望我不是在这里询问世界,但我正在寻找关于如何着手实施以下内容的建议/方向 我希望我的C# 自动布局增加控件数量,c#,wpf,xaml,data-binding,layout,C#,Wpf,Xaml,Data Binding,Layout,我对WPF有点陌生,希望我不是在这里询问世界,但我正在寻找关于如何着手实施以下内容的建议/方向 我希望我的main窗口包含N个按钮。每个按钮对不同的数据集(即打印图片1、打印图片2、…、打印图片N)执行相同的操作。我希望我的窗口自动布局按钮,如下所述: 注意按钮数量的增加,布局会以令人愉快的方式自动调整。最多6个,然后,它提供了一个水平滚动,可以在按钮之间随意移动 我觉得控件可能是实现这一点的方法,但我不知道如何让自动布局调整少了很多粗野的东西 切向上,我看到了WPF中数据绑定的威力,理想情况
main窗口包含N个按钮。每个按钮
对不同的数据集(即打印图片1、打印图片2、…、打印图片N)执行相同的操作。我希望我的窗口自动布局按钮,如下所述:
注意按钮数量的增加,布局会以令人愉快的方式自动调整。最多6个,然后,它提供了一个水平滚动,可以在按钮之间随意移动
我觉得
控件可能是实现这一点的方法,但我不知道如何让自动布局调整少了很多粗野的东西
切向上,我看到了WPF中数据绑定的威力,理想情况下,按钮的信息(显示文本、图形等)将自动绑定到一个可观察的集合,这样当我将按钮插入集合时,UI会自动更新。相反,当单击每个按钮时,我希望有一个通用处理程序know button 5映射到集合中的第5个元素,该元素包含所有这些附加信息(即要打印的图片的文件名)
这一切听起来都很好,但我在实现中又迷失了一点。我认为您必须创建一个自定义面板类,覆盖MeasureOverride和ArrangeOverride以实现所需的布局。查看这个(非常简短)。正如Allonym所说,最可定制的方法是为此创建一个新的自定义面板。
当然,也可以使用UniformGrid
实现这一点,并使用绑定和转换器对其进行一些调整。那是为了布局
关于第二个问题,我认为使用ItemsControl
是最好的方法。您可以将新的面板
(或UniformGrid
)作为其ItemsPanel
传递给它。此外,您还可以创建一个内置按钮的DataTemplate
,将其Command
属性绑定到单个命令(=通用处理程序),并将DataTemplate
(=列表的当前项)的DataContext
作为参数。这部分比布局容易
这有帮助吗
安托万