首页 >后端开发 >C++ >如何触发从XAML更改依赖项属性上的回调?

如何触发从XAML更改依赖项属性上的回调?

Barbara Streisand
Barbara Streisand原创
2025-01-24 12:47:10626浏览

How to Trigger Callbacks on Dependency Property Changes from XAML?

在 XAML 中处理依赖属性更改的回调

在运行时为依赖属性设置值时,相应的 OnPropertyChanged 方法会立即被调用。但是,当设计器通过 XAML 分配属性值时,这些回调保持休眠状态。这种行为源于直接使用属性系统的 SetValue 方法的效率,绕过了属性包装器设置器方法。因此,在这种情况下,属性包装器中的逻辑无效。

为了解决这个问题,请使用属性元数据注册一个 PropertyChangedCallback

<code class="language-csharp">public static readonly DependencyProperty IsClosedProperty =
    DependencyProperty.Register(
        "IsClosed", typeof(bool), typeof(GroupBox),
        new FrameworkPropertyMetadata(false,
            FrameworkPropertyMetadataOptions.AffectsRender,
            (o, e) => ((GroupBox)o).OnIsClosedChanged()));

public bool IsClosed
{
    get { return (bool)GetValue(IsClosedProperty); }
    set { SetValue(IsClosedProperty, value); }
}

private void OnIsClosedChanged()
{
    _rowDefContent.Height = new GridLength((IsClosed ? 0 : 1), GridUnitType.Star);
}</code>

这种方法确保 OnIsClosedChanged 方法在修改 IsClosed 属性值时执行,无论来源是 XAML、绑定等。

以上是如何触发从XAML更改依赖项属性上的回调?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn