Wpf 依赖项属性的CLR包装器是否可选?
我的印象是,依赖属性的CLR包装器在WPF下是可选的,并且只对在您自己的代码中设置有用 但是,我创建了一个没有包装器的UserControl,但是一些使用它的XAML在没有包装器的情况下无法编译:Wpf 依赖项属性的CLR包装器是否可选?,wpf,wrapper,dependency-properties,Wpf,Wrapper,Dependency Properties,我的印象是,依赖属性的CLR包装器在WPF下是可选的,并且只对在您自己的代码中设置有用 但是,我创建了一个没有包装器的UserControl,但是一些使用它的XAML在没有包装器的情况下无法编译: namespace MyControlLib { public partial class MyControl : UserControl { public static readonly DependencyProperty SomethingProperty;
namespace MyControlLib
{
public partial class MyControl : UserControl
{
public static readonly DependencyProperty SomethingProperty;
static MyControl()
{
SomethingProperty = DependencyProperty.Register("Something", typeof(int), typeof(MyControl));
}
}
}
XAML用法:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ctrl="clr-namespace:MyControlLib;assembly=MyControlLib">
<ctrl:MyControl Something="45" />
</Window>
意味着它可以编译并运行良好
我错过了什么 您可以在运行时绑定中使用不带包装器的依赖项属性,但要按您的意愿设置属性,您必须具有C#属性,以允许xaml编译器编译您的代码。如果您在属性上指定名称空间前缀,我相信它将在没有包装器的情况下编译 它们是可选的,但是如果没有它们,属性不会自动显示在XAML设计器中
<ctrl:MyControl ctrl:MyControl.Something="45" />
+1,我要补充的是,对于依赖项属性,即使框架并不总是使用它。不幸的是,这对我不起作用。我得到:错误MC3072:属性“MyControl.Something”在XML命名空间“clr命名空间:MyControlLib”中不存在
<ctrl:MyControl ctrl:MyControl.Something="45" />