2012-06-26 104 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

相关问题