和/或如何DependencyProperty在我的控件上定义一个sepcifies AffectsMeasure?
编辑:哦,刚看到这一点-我必须叫InvalidateMeasure上this在propertychangedhandler?
对不起。不支持UWP AffectsMeasure 。对于 Framework 3+ 它有效。对于默认的 UWP 绑定,我正在使用 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
Run Code Online (Sandbox Code Playgroud)
XAML:
<Rectangle Fill="Black" Visibility="{x:Bind IsSelected, Mode=OneWay, Converter={StaticResource BoolToVis}}" />
Run Code Online (Sandbox Code Playgroud)
Windows 10、应用商店、VS 2017、Microsoft.NETCore.UniversalWindowsPlatform 版本 5.2.3
| 归档时间: |
|
| 查看次数: |
740 次 |
| 最近记录: |