我試圖找到一種方法來更改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