Mor*_*goZ 5 wpf xaml dependency-properties code-behind
是否可以在定义它的元素的XAML中调用自定义依赖项属性?
我的意思是,我的mainWindow有以下简单代码:
码
public partial class MainWindow : Window
{
public static readonly DependencyProperty SpecialToProperty = DependencyProperty.Register("SpecialTo", typeof(double), typeof(MainWindow));
public MainWindow()
{
InitializeComponent();
}
public double SpecialTo
{
get
{
return (double)GetValue(SpecialToProperty);
}
set
{
SetValue(DoubleAnimation.ToProperty, value);
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何从MainWindow类的XAML部分代码中使用该依赖项属性?
我的意思是:
<Window x:Class="WpfAnimationTEst.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
SpecialTo=200>
Run Code Online (Sandbox Code Playgroud)
我知道可以使用附加的依赖属性来完成它,但这是唯一的方法吗?是不是可以调用代码隐藏中定义的依赖项属性?
谢谢你,如果这个问题有点愚蠢,我很抱歉,我只是在学习并试图理解WPF.
您可以在 XAML 中使用自定义依赖项属性,但前提是您在 XAML 中实例化控件。以自定义元素为例TextBox
:
public class MyTextBox : TextBox
{
public static readonly DependencyProperty SpecialToProperty = DependencyProperty.Register("SpecialTo", typeof(double), typeof(MyTextBox));
public double SpecialTo
{
get
{
return (double)GetValue(SpecialToProperty);
}
set
{
SetValue(DoubleAnimation.ToProperty, value);
}
}
}
Run Code Online (Sandbox Code Playgroud)
您当然可以MyTextBox
在 XAML 中创建一个实例并在那里分配SpecialTo
属性:
<custom:MyTextBox SpecialTo="1.0" />
Run Code Online (Sandbox Code Playgroud)
但是,在您的情况下,您没有实例化自定义 class MainWindow
,而是创建了 class 的新实例Window
,并且该类Window
不知道自定义依赖属性(该SpecialTo
属性甚至在 中不可用Window
,因为您在班上MainWindow
)。
为了识别依赖属性,您需要MainWindow
直接实例化:
<custom:MainWindow
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
SpecialTo=200>
Run Code Online (Sandbox Code Playgroud)
但是,这意味着您需要省略x:class
用于组合 XAML 和窗口代码隐藏的指令(否则您会遇到循环依赖),并且我不确定这是否正确初始化您的窗口...