2012-06-26 172 views
0

我試圖找到一種方法來更改WPF中窗口的內容,而無需加載新窗口。在大多數情況下,以下工作就好了:在沒有新窗口的情況下加載XAML內容

dim x as new window 
x.show() 
me.close 

有沒有辦法做下面的事情?

dim x as new window 
me.content = x 

回答

1

此答案有點延遲。我遇到了一種情況,我需要更改窗口的全部或部分內容,正如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事件來獲取窗口更新。

0

如何設置你的窗口的所有可能的配置在一個窗口中,切換和任何你想顯示的可見性,並在需要時不會顯示爲和?

這將使定製更容易,而不是手動修改可視樹。不過,請記住要保持虛擬化的面板,否則你的表現可能會受到影響。

0

您是否探索過WPF中的ContentPresenter/ContentControl選項?在您的窗口中保留內容展示者/內容控件,並動態設置其屬性Content ...這樣您就不需要重新加載窗口。

+0

我現在在家,所以我沒有我使用的代碼的確切副本。但內容控制似乎確實如此。我做了這樣的事情,在內容控制被評爲controlContainer: 暗淡x作爲 contentContainer.children.clear contentContainer.children.add(X) 這似乎像一個魅力的工作! – SeanH

相關問題