是否可以在定义它的元素的XAML中调用自定义依赖项属性? 我的意思是,我的mainWindow有以下简单代码: 码 public partial class MainWindow : Window{ public static readonly DependencyProperty SpecialToProperty
我的意思是,我的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); } } }
如何从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>
我知道可以使用附加的依赖属性来完成它,但这是唯一的方法吗?是不是可以调用代码隐藏中定义的依赖项属性?
谢谢你,如果这个问题有点愚蠢,我很抱歉,我只是在学习并试图理解WPF.
我在最初发布错误答案后找到了答案:如果你使用andreask的答案,问题实际上在于循环依赖.我必须为所有窗口创建一个BaseClass:
1)创建一个新的Window Base类:
public class BaseWindow : Window { public BaseWindow() { } public static readonly DependencyProperty SpecialToProperty = DependencyProperty.Register("SpecialTo", typeof(double), typeof(BaseWindow)); public double SpecialTo { get { return (double)GetValue(SpecialToProperty); } set { SetValue(SpecialToProperty, value); } } }
这将是所有窗口的新基类.
2)修改您的MainWindow xaml :(将YOURNAMESPACE(2x)更改为您的命名空间名称)
<local:BaseWindow x:Class="YOURNAMESPACE.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:YOURNAMESPACE" Title="MainWindow" Height="350" Width="525" SpecialTo="100"> <Grid> </Grid> </local:BaseWindow>
3)您还需要修改部分MainWindow.cs:
public partial class MainWindow : BaseWindow { public MainWindow() { InitializeComponent(); } }
这对我有用,但是,你总是需要在窗口声明中使用额外的xaml标记.