如何在WPF应用程序中完成不同的视图状态

时间:2011-08-22 05:55:18

标签: c# .net wpf xaml

我对个人项目有所了解。我知道在Windows窗体中实现它的一种方法(我不再希望使用它)。基本上我可以(在WinForms中)将所有内容绘制到屏幕上(Form),然后当我需要切换应用程序的视图/状态时,只需重新绘制旧内容中的新内容。

但是我们怎样才能在WPF中拥有不同的状态?这样做有“正确”或“正确”的方式吗?在文档的某个地方是否覆盖了这样的内容?

我想自己进行搜索,但我不知道到底要找什么,目前寻找正确信息的尝试到目前为止都没有产生任何有用(甚至相关)的结果。

任何帮助都将非常感谢。我是WPF的新手,但过去一周取得了很大的进步!

谢谢!

P.S .: 我只是想做点什么。如果解决方案是绘制一个屏幕所需的内容,并且是时候显示下一个屏幕,只需处理/隐藏所有内容并创建/显示新内容,那么我们如何解决这个问题呢?因为我们不能/不应该在运行时更改XAML标记,我们可以吗? :/

2 个答案:

答案 0 :(得分:2)

不确定如何在WinForms中绘制视图/状态(直接在Graphics对象上绘制?)。

与您描述的最接近的是VisualStateManager。您可以使用它在单个XAML中静态定义多个视觉状态并在它们之间传输(如果需要,可以使用平滑动画)。

如果您所做的是使用Show / ShowDialog()显示不同的表单,那么等效的将是使用不同的Windows并显示/隐藏它们。

如果您刚刚清除/添加了控件到您的表单,那么您可以在WPF中执行相同的操作。 WPF中的大多数控件在表单中都有ContentChildren属性,而不是Control.Controls

答案 1 :(得分:1)

我不知道我是否理解你真正想要的东西。但这是我的想法:

  • 您可以使用多个Windows并相应地显示/隐藏它们
  • 您可以使用WP中的框架/页面功能(MSDN
  • 如果您确实需要,可以加载XAML并删除窗口中最顶层的内容并将其替换为已加载的内容
  • 您可以使用VisualStateGroup功能更改当前窗口的外观

我认为你会对第二个解决方案感到满意

相关问题