我想在Windows 10 UWP中使用更改内容进行用户控制。
我知道如何进行简单的用户控制,但我需要一个像这样的用户控件:
<Controls:UserControl x:Name="Usercontrol1" Margin="0,10,0,0" Grid.Row="1">
<Controls:UserControl.MainContent>
<Grid x:Name="Content">
//Items are here
</Grid>
</Controls:UserControl.MainContent>
</Controls:UserControl>
我的用户控件中的Grid是空的,我想在每个页面中为此网格提供不同的项目。我想要一种方法在页面中为我的用户控件设置网格,然后将此网格添加到我的用户控件而不是那个空网格。
有没有办法做到这一点?
答案 0 :(得分:11)
为此,您需要在用户控件的代码隐藏中创建MainContent
依赖项属性,并使用ContentPresenter
显示它。
假设您的用户控件已在MyControl.xaml
和MyControl.xaml.cs
中定义。
MainContent
依赖项属性在UserControl
的{{1}}类定义中添加以下内容:
UserControl.xaml.cs
作为Visual Studio中的快捷方式,您可以编写public static readonly DependencyProperty MainContentProperty =
DependencyProperty.Register(
"MainContent",
typeof( object ),
typeof( MyControl ),
new PropertyMetadata( default( object ) ) );
public object MainContent
{
get { return ( object ) GetValue( MainContentProperty ); }
set { SetValue( MainContentProperty, value ); }
}
或propdp
(具体取决于您的版本),然后按标签键自动填写代码段。整个财产。
dependencyProperty
在ContentPresenter
内找到要显示内容的位置,并在MyControl.xaml
处放置ContentPresenter
属性的绑定。
有几种方法可以做到这一点。
MainContent
语法
x:Bind
使用与元素的绑定 - 在这里,您需要向<ContentPresenter Content="{x:Bind MainContent}" />
元素本身添加x:Name
属性,例如将其称为UserControl
,然后像这样创建绑定:
RootControl
使用<ContentPresenter Content="{Binding MainContent, ElementName=RootControl}" />
绑定 - 在DataContext
UserControl
的构造函数中,您可以设置MyControl.xaml.cs
- DataContext
然后简单地写一下:
this.DataContext = this;
现在您的<ContentPresenter Content="{Binding MainContent}" />
已准备就绪,您可以像这样使用它:
UserControl