【问题标题】:Default value on a custom WPF control自定义 WPF 控件的默认值
【发布时间】:2013-01-02 20:03:29
【问题描述】:

这是我的问题。我最近创建了一个自定义控件,效果很好。 但是我用的时候有问题,我有个小问题:

在我的控制下,我创建了一个名为 Value 的属性,定义如下:

 public static readonly DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(int), typeof(NumericUpDown), new PropertyMetadata(1000));
    public int Value
    {
        get
        {
            return (int)GetValue(ValueProperty);
        }
        set
        {
            SetValue(ValueProperty, value);
            this.ValueText.Text = value.ToString();
        }
    }

当我对该值进行数据绑定时,绑定有效,但默认值设置为 1000,因此它首先打印 1000。但实际上,绑定到 Value 的属性不等于 1000。 创建 Value 属性时,我想在ValueText.Text 中打印绑定属性的值。

编辑:问题很简单,如何删除该默认值并直接打印绑定属性?

【问题讨论】:

  • 我在这个混乱中没有看到问号。
  • 哦,嗯,好吧,对不起>

标签: c# wpf custom-controls dependency-properties


【解决方案1】:

您应该能够在 DependancyProperties 元数据中设置 PropertyChanged 事件,以便在 Value 更改时更新 ValueText

类似这样的:

public static readonly DependencyProperty ValueProperty =
    DependencyProperty.Register("Value", typeof(int), typeof(NumericUpDown),
    new PropertyMetadata(1000, (sender, e) => (sender as NumericUpDown).ValueText.Text = e.NewValue.ToString()));

public int Value
{
    get { return (int)GetValue(ValueProperty); }
    set { SetValue(ValueProperty, value); }
}

【讨论】:

    【解决方案2】:

    当事情通过 WPF 的数据绑定发生变化时,不会调用属性设置器,因此这种技术将不起作用。

    默认的初始值将始终为 1000,但数据绑定可能会覆盖它。您需要添加一个Callback,以便在更改依赖项属性值时适当地通知您。

    有关详细信息,请参阅Dependency Property Callbacks 页面以了解如何正确实现属性更改回调。这是设置其他 (ValueText) 属性的合适位置。

    【讨论】:

      猜你喜欢
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-08
      • 2010-11-08
      • 1970-01-01
      相关资源
      最近更新 更多