和/或如何在控件中定义DependencyProperty
的AffectsMeasure
?
编辑:哦,刚刚看到了-我必须在propertychangedhandler中的InvalidateMeasure
上调用this
吗?
最佳答案
对不起。对于UWP,不支持AffectsMeasure。对于Framework 3+,它可以工作。对于默认的UWP绑定(bind),我正在使用CodeSnipped功能。通过事件处理,您可以透明地进行操作。 UWP的codeSnippet的结果对于我的模型如下所示:
#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
关于c# - UWP中的FrameworkPropertyMetadata在哪里?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33709028/