控制定位&捆绑

时间:2010-09-13 15:27:58

标签: c# .net wpf user-interface

自第一个框架引入以来,我一直在使用WinForms,并投入了大量的时间和精力。现在我正试图转向WPF,老实说,这并不容易。

现在我有一个任务,我需要实现一个简单的向导,每个页面都有一个对齐的中心控件组。该组包含一组按钮,连续四个按钮。组的宽度是常量,高度是可变的 - 它取决于内部按钮的数量。

alt text

对于WinForms来说这是一个简单的任务,但我不知道如何使用XAML。

我有三个问题:

1)。显然,组内的按钮是 WrapPanel ,它放在Grid的单元格中。这很简单。但是如何计算 WrapPanel 的高度而不使用后面的代码?

2)。哪种方法可以实现向导?数据模板或某种 Tab Control ?切换页面时,我可能需要一些过渡效果。

3)。 WPF世界中是否可以使用绑定作为重新定位控件的方法?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

默认情况下,WrapPanel会根据其内容自动调整其高度。 WPF是WinForms的一大进步,正是因为新的布局范例。你提到的任何事情都不需要代码。

至于2;有很多方法可以实现这一点,具体取决于你对MVVM的接近程度(如果有的话);我建议首先使用样式化的TabControl(您可以调整样式以在视觉上呈现向导中的步骤作为选项卡,而不让用户在选项卡之间跳转),因为它是最简单的。此外,它可以将所有内容绑定到TabControl。

3是可能的,但应该很少需要。我的意思是。

现在;一个简单的例子,向您展示WPF的强大功能。 您可以拥有ViewModel(如果您不熟悉MVVM谷歌或阅读任何Josh Smith的文章或书籍或者......哇,有这么丰富的信息,我不知道哪个选择一个对象集合,让我们说Step类,你可以绑定到TabControl的ItemsSource。 TabControl将自动为您的每个步骤创建一个选项卡。 在Step类中,你可以有一组项目,比方说......嗯,Collection<Push>(我很难不使用像Action或Button这样的已知类)。如果TabControl的ItemTemplate包含识别该集合的任何内容,就像在内部设计为其ItemsSettainer使用WrapPanel的ListBox中一样,您就完成了:模板将显示WrapPanel中的Pushes列表,就是那样。

现在,我可能不应该在这里写一个完整的教程,但这应该让你开始。阅读DataTemplates,ItemsControl等(再次,我在选择资源方面遇到困难...... Dr. WPF两篇文章都有很棒的文章,但它们可能有点高级)你应该好好去。请记住,WPF具有比以往任何桌面技术更多流畅布局的充分理由,您应该熟悉它。