Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自动布局增加控件数量_C#_Wpf_Xaml_Data Binding_Layout - Fatal编程技术网

C# 自动布局增加控件数量

C# 自动布局增加控件数量,c#,wpf,xaml,data-binding,layout,C#,Wpf,Xaml,Data Binding,Layout,我对WPF有点陌生,希望我不是在这里询问世界,但我正在寻找关于如何着手实施以下内容的建议/方向 我希望我的main窗口包含N个按钮。每个按钮对不同的数据集(即打印图片1、打印图片2、…、打印图片N)执行相同的操作。我希望我的窗口自动布局按钮,如下所述: 注意按钮数量的增加,布局会以令人愉快的方式自动调整。最多6个,然后,它提供了一个水平滚动,可以在按钮之间随意移动 我觉得控件可能是实现这一点的方法,但我不知道如何让自动布局调整少了很多粗野的东西 切向上,我看到了WPF中数据绑定的威力,理想情况

我对WPF有点陌生,希望我不是在这里询问世界,但我正在寻找关于如何着手实施以下内容的建议/方向

我希望我的
main窗口包含N个按钮。每个
按钮
对不同的数据集(即打印图片1、打印图片2、…、打印图片N)执行相同的操作。我希望我的窗口自动布局按钮,如下所述:

注意按钮数量的增加,布局会以令人愉快的方式自动调整。最多6个,然后,它提供了一个水平滚动,可以在按钮之间随意移动

我觉得
控件可能是实现这一点的方法,但我不知道如何让自动布局调整少了很多粗野的东西

切向上,我看到了WPF中数据绑定的威力,理想情况下,按钮的信息(显示文本、图形等)将自动绑定到一个可观察的集合,这样当我将按钮插入集合时,UI会自动更新。相反,当单击每个按钮时,我希望有一个通用处理程序know button 5映射到集合中的第5个元素,该元素包含所有这些附加信息(即要打印的图片的文件名)


这一切听起来都很好,但我在实现中又迷失了一点。

我认为您必须创建一个自定义面板类,覆盖MeasureOverride和ArrangeOverride以实现所需的布局。查看这个(非常简短)。

正如Allonym所说,最可定制的方法是为此创建一个新的自定义
面板。
当然,也可以使用
UniformGrid
实现这一点,并使用绑定和转换器对其进行一些调整。那是为了布局

关于第二个问题,我认为使用
ItemsControl
是最好的方法。您可以将新的
面板
(或
UniformGrid
)作为其
ItemsPanel
传递给它。此外,您还可以创建一个内置按钮的
DataTemplate
,将其
Command
属性绑定到单个命令(=通用处理程序),并将
DataTemplate
(=列表的当前项)的
DataContext
作为参数。这部分比布局容易

这有帮助吗

安托万