我在 WPF 中工作,我正在创建一些 userControl,其中一些在其他内部。
在我的一个 userControls 背后的代码中,我创建了一个依赖属性,如下所示:(MyInnerControl.xaml.cs)
public static DependencyProperty MyDependencyProperty = DependencyProperty.Register(
"MyProperty",
typeof(Object),
typeof(MyInnerControl));
public Object MyProperty
{
get
{
return (Object)GetValue(MyDependencyProperty );
}
set
{
SetValue(MyDependencyProperty , value);
}
}
...
...
而且这个属性工作得很好,但是我尝试在另一个 userControl 中公开这个依赖项,如下所示:
在我的容器 userControl 后面的代码中:(MyContainerControl.xaml.cs)
public static DependencyProperty MyExternalDependencyProperty = DependencyProperty.Register(
"MyExternalProperty",
typeof(Object),
typeof(MyContainerControl));
public Object MyExternalProperty
{
get
{
return (Object)GetValue(MyExternalDependencyProperty );
}
set
{
SetValue(MyExternalDependencyProperty , value);
}
}
...
...
在我的 XAML 中:(MyContainerControl.xaml)
<UserControl x:Class="MyControls.MyContainerControl" Name="this"
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="329" d:DesignWidth="535" xmlns:my="clr-namespace:MyInnerControls">
<Grid>
<my:MyInnerControl Margin="6,25,6,35" MyProperty="{Binding ElementName=this, Path=MyExternalProperty, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
...
...
最后,我将 MyContainerControl 添加到网格并绑定到我的 viewModel,如下所示:(AnotherContainer.xaml)
...
<MyContainerControl MyExternalProperty="{Binding MyExternalProperty}"/>
...
我的问题是我的 ExternalProperty 没有获取或设置任何值。我究竟做错了什么?
澄清一下,我的 DataContext 设置正确。
希望有人可以帮助我,在此先感谢您。