UWP 中的 FrameworkPropertyMetadata 在哪里?

Posted

技术标签:

【中文标题】UWP 中的 FrameworkPropertyMetadata 在哪里?【英文标题】:Where's FrameworkPropertyMetadata in UWP? 【发布时间】:2016-02-15 23:54:11 【问题描述】:

和/或如何在我的控件上定义一个DependencyProperty 来分隔AffectsMeasure

编辑:哦,刚刚看到这个 - 我必须在 propertychangedhandler 中的 this 上调用 InvalidateMeasure 吗?

【问题讨论】:

【参考方案1】:

对不起。不支持 UWP AffectsMeasure。对于 Framework 3+,它可以工作。对于默认 UWP 绑定,我正在使用 CodeSnipped 功能。通过事件处理,您可以透明地行事。我的 UWP 代码片段的结果对于我的模型如下所示:

    #region IsSelected

    public static readonly DependencyProperty IsSelectedProperty =
        DependencyProperty.Register("IsSelected", typeof(bool), typeof(PositionModel),
            new PropertyMetadata((bool)false,
                new PropertyChangedCallback(OnIsSelectedChanged)));

    public bool IsSelected
    
        get  return (bool)GetValue(IsSelectedProperty); 
        set  SetValue(IsSelectedProperty, value); 
    

    private static void OnIsSelectedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    
        PositionModel target = (PositionModel)d;
        bool oldIsSelected = (bool)e.OldValue;
        bool newIsSelected = target.IsSelected;
        target.OnIsSelectedChanged(oldIsSelected, newIsSelected);
    

    protected virtual void OnIsSelectedChanged(bool oldIsSelected, bool newIsSelected)
    
       // Do what your need in your property changed event
       // In my case, I just raise the PropertyChanged for PropertyChangedEventHandler
       // RaisePropertyChanged(nameof(IsSelected));
    
    #endregion

XAML:

<Rectangle Fill="Black" Visibility="x:Bind IsSelected, Mode=OneWay, Converter=StaticResource BoolToVis" />

Windows 10、应用商店、VS 2017、 Microsoft.NETCore.UniversalWindowsPlatform 版本 5.2.3

【讨论】:

我不确定您是否已针对正确的问题发布了此答案...您是否比我如何定义 DependencyProperty 了解得更深入? 对不起。不支持 UWP AffectsMeasure。对于 Framework 3+,它可以工作。只需将FrameworkPropertyMetadata 替换为PropertyMetadata 并在您的ViewModel 中使用命名空间namespace Windows.UI.Xaml。据我了解,这将完全解决您的问题并回答您的问题。 嗯,这就是我在问题中发布的信息。不,我的问题没有解决。如果您仔细阅读,我想要一个触发新测量通道的依赖属性。因为这就是InvalidateMeasure 所做的。您的示例触发了新的测量过程,因为绑定进入了可见性。试试Tag,告诉我它很管用。

以上是关于UWP 中的 FrameworkPropertyMetadata 在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 VisualStudio 2019 为 Microsoft.Toolkit.Uwp.UI.Controls 中的控件获取 UWP 的默认模板(样式代码)?

UWP:后台任务中的音频媒体捕获

如何访问 UWP 应用中的注册表项?

使用 .Net 标准库中的 UWP 方法

Xamarin 中的 FontAwesome 形成 UWP

uwp 中的无铬窗口