我正在尝试找到一种方法来更改WPF中窗口的内容,而无需加载新窗口。在大多数情况下,以下工作正常:
dim x as new window
x.show()
me.close
有没有办法做类似以下的事情?
dim x as new window
me.content = x
答案 0 :(得分:1)
这个答案有点延迟。我遇到了一个需要更改窗口全部或部分内容的情况,正如wpf-it所建议的那样 - 我使用了ContentControl。
我使用的窗口正在与条形码扫描仪一起使用。我们有一些项目类型可以使用一组不同的选项和显示进行扫描。由于我们的应用程序是用MVVM模式编写的(或至少...... MVVM-esque;))我创建了一些XAML:
<ContentControl Grid.Row="2" Content="{Binding itemOptions}" />
然后绑定到此属性:
Public ReadOnly Property itemOptions As UserControl
Get
Select Case SearchResult.GetType()
' Part
Case GetType(partHeaderModel)
Try
Return New partOptions
Catch ex As Exception
' Fail
' Return New noResults
End Try
' Bin
Case GetType(binModel)
Try
Return New binOptions
Catch ex As Exception
' Fail
Return New noResults
End Try
' Rack
Case GetType(rackModel)
Try
Return New rackOptions
Catch ex As Exception
' Fail
Return New noResults
End Try
Case Else
End Select
Return New noResults
End Get
End Property
我有一个搜索功能,它根据用户扫描的项目类型返回数据模型。根据类型,select语句返回属性用户控件。我使用INotifyPropertyChanged和扫描事件来获取更新窗口。
答案 1 :(得分:0)
检查此主题:How to get reference to element in resources, WPF?
阅读,它可以帮助..有数千种工作方式,所以你必须找到他或更好。 使用的一个旧概念是MDI: http://www.codeproject.com/Articles/22927/Multiple-Window-Interface-for-WPF
答案 2 :(得分:0)
如何在一个窗口中设置窗口的所有可能配置,并切换您想要显示的内容的可见性,而不是在需要时显示?
这样可以更容易自定义而不是手动修改Visual Tree。但是请记住保持虚拟化任何面板,否则您的表现会受到影响。
答案 3 :(得分:0)
您是否在WPF中探索了ContentPresenter
/ ContentControl
选项?在窗口中保留内容演示者/内容控件,并动态设置其Content
属性...这样您就不需要重新加载窗口了。