[英]Set custom window property in xaml
我有以下代码:
public partial class NewWindow: Window
{
public static readonly DependencyProperty PropNameProperty =
DependencyProperty.Register(
"PropName",
typeof(int),
typeof(NewWindow),
null);
public int PropName
{
get
{
return (int)GetValue(PropNameDependencyProperty);
}
set
{
SetValue(PropNameDependencyProperty, value);
}
}
现在,当我尝试使用新属性时,无法编译:
<Window x:Class="AppName.NewWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:my="clr-namespace:AppName"
Title="NewWindow" Height="300" Width="300"
PropName="5" <-"property does not exist" error here
>
我可能只是误解了一些东西,但是我不确定是什么。
据我了解,找不到属性的原因是因为它是在Window类中而不是在NewWindow类中寻找它。 为什么? 因为XAML标记名称是Window,而不是NewWindow。
我尝试将标签更改为NewWindow,但实际上不能这样做,因为您的XAML和后面的代码正在协作以定义NewWindow类,并且您不能就其本身定义类。 这就是为什么顶层XAML元素始终是父类的原因,并提出了一种解决方案:在一个继承自Window的新类中定义属性(为方便起见,将其称为ParentWindow),然后从中派生NewWindow,所以你得到像
<local:ParentWindow x:Class="TestApp.NewWindow"
PropName="5"
xmlns:local="clr-namespace:TestApp"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
...
</local:ParentWindow>
我赞赏这不一定是一个非常优雅的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.