自动布局增加控件数量

时间:2012-02-27 22:39:20

标签: c# wpf xaml data-binding layout

我对WPF有些新意,希望我不是在这里要求这个世界,但我正在寻求有关如何实施以下内容的建议/指导。

我希望我的MainWindow包含N个按钮。每个Button对不同的数据集(即打印图像1,打印图像2,...,打印图像N)执行相同的动作。我希望我的窗口能够按如下所述自动布局按钮:

enter image description here

请注意按钮数量如何增加,布局会以愉快的方式自动调整。最多6个,然后它提供一个水平滚动按钮随机播放。

我觉得<Grid>控制可能是提供这种方式的方法,但是我对于如何使自动布局调整缺乏很多粗野的前提感到迷茫。

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

这一切听起来都不错,但我再次在实施中失去了一点。

2 个答案:

答案 0 :(得分:1)

正如Allonym所说,最可定制的方式是为此创建一个新的自定义Panel。 恕我直言,也可以使用UniformGrid来实现这一点,并使用绑定和转换器稍微调整一下。那是为了布局。

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

有帮助吗?

安托

答案 1 :(得分:0)

我认为您必须创建一个自定义Panel类,重写MeasureOverride和ArrangeOverride以实现所需的布局。看看这个(非常简短)tutorial