我试图找到一种方法来更改WPF中窗口的内容,而无需加载新窗口。在大多数情况下,以下工作就好了:在没有新窗口的情况下加载XAML内容
dim x as new window
x.show()
me.close
有没有办法做下面的事情?
dim x as new window
me.content = x
我试图找到一种方法来更改WPF中窗口的内容,而无需加载新窗口。在大多数情况下,以下工作就好了:在没有新窗口的情况下加载XAML内容
dim x as new window
x.show()
me.close
有没有办法做下面的事情?
dim x as new window
me.content = x
此答案有点延迟。我遇到了一种情况,我需要更改窗口的全部或部分内容,正如wpf-it所建议的那样 - 我使用了ContentControl。
我用过的这个窗口正与条形码扫描仪一起使用。我们有一些项目类型,可以使用不同的选项和每个项目所需的显示进行扫描。由于我们的应用程序是用MVVM模式(或者至少... MVVM式的;))我创建了一些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和scan事件来获取窗口更新。
检查这个话题:How to get reference to element in resources, WPF?
读取,它可以帮助..有成千上万的方式工作,所以你必须找到他或更好。 这是使用了旧的概念是MDI: http://www.codeproject.com/Articles/22927/Multiple-Window-Interface-for-WPF
如何设置你的窗口的所有可能的配置在一个窗口中,切换和任何你想显示的可见性,并在需要时不会显示为和?
这将使定制更容易,而不是手动修改可视树。不过,请记住要保持虚拟化的面板,否则你的表现可能会受到影响。
您是否探索过WPF中的ContentPresenter
/ContentControl
选项?在您的窗口中保留内容展示者/内容控件,并动态设置其属性Content
...这样您就不需要重新加载窗口。
我现在在家,所以我没有我使用的代码的确切副本。但内容控制似乎确实如此。我做了这样的事情,在内容控制被评为controlContainer: 暗淡x作为 contentContainer.children.clear contentContainer.children.add(X) 这似乎像一个魅力的工作! –
SeanH