加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 程序设计 > 正文

wpf – 从XAML调用代码隐藏中定义的自定义依赖项属性

发布时间:2020-05-23 00:34:57 所属栏目:程序设计 来源:互联网
导读:是否可以在定义它的元素的XAML中调用自定义依赖项属性? 我的意思是,我的mainWindow有以下简单代码: 码 public partial class MainWindow : Window{ public static readonly DependencyProperty SpecialToProperty = DependencyProperty.Register(S

是否可以在定义它的元素的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);
        }
    }
}

如何从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(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标记.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读