【问题标题】:Property just has default value in code-behind - WPF属性在代码隐藏中只有默认值 - WPF
【发布时间】:2018-09-08 09:34:23
【问题描述】:

我正在使用一些在主窗口的字典中自动“注册”的用户控件。用户控件在主窗口的 XAML 中设置了一些值。
我已经实现了依赖属性和所有这些,工作正常。 但是当我从自定义属性中访问值时,例如

Main.Conn.RequestStatus(sf.Address);

该属性正在返回我在类定义中设置的默认值。

public string Address {get; set;} = "";

但是当我打电话时

Main.Conn.RequestStatus((string)GetValue(AddressProperty)));

它正在正常工作(地址为“1/11”)。

这是为什么呢?我是否必须使用 Dependecy Property 方法获取属性值?还是我以错误的方式实现属性?

【问题讨论】:

  • “或者我是否以错误的方式实现属性?” 可能。请分享代码,这样我们就可以说“是”或“否”。
  • 看你的代码,我想知道地址在哪里。我认为 Clemens 有一个很好的观点,但它是基于它作为你的 dp 的包装器。也许它是在视图模型中,并且存在一些绑定问题。请向我们展示更多代码并解释它们应该如何组合在一起。

标签: c# wpf xaml properties dependency-properties


【解决方案1】:

声明

public string Address {get; set;} = "";

不是依赖属性的有效包装器。

它必须是这样的:

public string Address
{
    get { return (string)GetValue(AddressProperty); }
    set { SetValue(AddressProperty, value); }
}

依赖属性标识符字段应该这样定义:

public static readonly DependencyProperty AddressProperty =
    DependencyProperty.Register(
        nameof(Address),
        typeof(string),
        typeof(YourControl),
        new PropertyMetadata(""));

【讨论】:

    猜你喜欢
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 2012-12-24
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 2015-06-06
    相关资源
    最近更新 更多