我是新手,所以我希望我的问题不是愚蠢的。
假设有一个简单的UserControl(称之为MyUC),就像这样
<UserControl x:Class="MyUC.MyUC"
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"
xmlns:local="clr-namespace:MyUC"
mc:Ignorable="d" d:DesignWidth="311" Height="150">
<Grid>
<Label x:Name="_lbl1" Width="104" Height="26" Margin="13,23,0,0"/>
<Label x:Name="_lbl2" Width="104" Height="26" Margin="13,53,0,0"/>
<Grid/>
<UserControl/>
如果我理解正确,如果我希望能够从MainWindow.xaml获取此UserControl(MyUC)中这些元素的属性(例如标签的内容),我将不得不在MyUC.xaml中添加这些属性的.cs
public static readonly DependencyProperty Label_1_ContentProperty =
DependencyProperty.Register("Label_1_Content", typeof(string), typeof(MyUC));
Public string Label_1_Content
{
get { return (string)GetValue(Label_1_ContentProperty); }
set { SetValue(Label_1_ContentProperty, value); }
}
public static readonly DependencyProperty Label_2_ContentProperty =
DependencyProperty.Register("Label_2_Content", typeof(string), typeof(MyUC));
Public string Label_2_Content
{
get { return (string)GetValue(Label_2_ContentProperty); }
set { SetValue(Label_2_Content_2_Property, value); }
}
将此绑定添加到MyUC.xalm
中的_lbl1和_lbl2内容<Label x:Name="_lbl1" Width="104" Height="26" Margin="13,23,0,0"
Content="{Binding Label_1_Content, RelativeSource={RelativeSource
AncestorType={x:Type local:MyUC}}}"/>
<Label x:Name="_lbl2" Width="104" Height="26" Margin="13,53,0,0"
Content="{Binding Label_2_Content, RelativeSource={RelativeSource
AncestorType={x:Type local:MyUC}}}"/>
然后这些标签属性是可以访问的,可以像MainWindow.xalm一样设置
<control:MyUC Label_1_Content="This is the Label _lbl1 in the UserControl"
Label_2_Content="This is the Label _lbl2 in the UserControl"/>
但我认为这不是一个好方法,因为如果UserControl中有多个属性我需要 要达到,那么将需要很多依赖属性。
我的问题是:是否可以更简单地使用每个标签(_lbl1和_lbl2)直接拥有属性,并且能够在MainWindow.xaml中执行类似这样的操作
<control:MyUC _lbl1.Content="This is the Label _lbl1 in the UserControl"
_lbl2.Content="This is the Label _lbl2 in the UserControl"/>
如果在这种情况下应该怎么做或者如果不可能那么我该怎么办呢?
感谢任何帮助