如何在 MainWindow 中显示我的用户控件?
Posted
技术标签:
【中文标题】如何在 MainWindow 中显示我的用户控件?【英文标题】:How can I display my user control in the MainWindow? 【发布时间】:2011-07-25 05:25:16 【问题描述】:我正在尝试构建一个小型 MVVM 测试应用程序,但不知道如何在 MainWindow 中显示我的用户控件。
我的解决方案资源管理器:
我有一本资源字典:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:MVVM.ViewModel"
xmlns:vw="clr-namespace:MVVM.View">
<DataTemplate DataType="x:Type vm:ViewModel">
<vw:View />
</DataTemplate>
</ResourceDictionary>
我明白了:
<UserControl x:Class="MVVM.View.View"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<UserControl.Resources>
<DataTemplate x:Key="PersonTemplate">
<StackPanel>
<TextBlock Text="Binding FirstName" />
</StackPanel>
</DataTemplate>
</UserControl.Resources>
<ListBox ItemsSource="Binding Path=Persons"
ItemTemplate="StaticResource PersonTemplate" />
</UserControl>
和我的主窗口
<Window x:Class="MVVM.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:MVVM.ViewModel"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<ResourceDictionary Source="MainWindowResources.xaml" />
</Window.Resources>
<Grid>
</Grid>
</Window>
【问题讨论】:
【参考方案1】:最明显和最简单的方法是添加ContentControl
元素:
<Grid>
<ContentControl x:Name="mainContentControl" />
</Grid>
然后将此控件的Content
属性设置为您的视图模型,相应的视图将自动加载并应用:
this.mainContentControl.Content = new ViewModel.ViewModel();
但我更愿意使用没有数据模板的另一种方式:
<Grid>
<vw:View x:Name="mainView"/>
</Grid>
this.mainView.DataContext = new ViewModel.ViewModel();
【讨论】:
【参考方案2】:构建您的 VS2010 解决方案,然后转到 MainWindow 的 XAML。
在左侧,有一个带有“工具箱”按钮的工具栏
打开它,它包含您可以添加到 UI 中的所有可能的 WPF 控件
您的 UserControl 应该出现在列表顶部(在一个可能名为“MVVM 控件”的类别中),只需将其拖放到您的 UI 中:)
【讨论】:
什么意思,是工具箱没有出现,还是用户控件没有出现在列表中? 很好的提示,它节省了我的时间,因为我通常通过命名空间添加用户控制!谢谢。 显然 VS2013 (Premium) 继续前进,搜索工具箱没有产生用户控件或 mvvm 结果。以上是关于如何在 MainWindow 中显示我的用户控件?的主要内容,如果未能解决你的问题,请参考以下文章
如何将数据从 MainWindow 传递到 MainWindow 内的用户控件?
如何从 WPF 中的另一个窗口绑定到 MainWindow 中的控件?
我在QT主控件mainwindow里我加了一个widget控件,我用QPainter只能在mainwindow里画直线,如何画在widget