Rất tiếc. Đối với UWP AffectsMeasure không được hỗ trợ. Đối với Framework 3+ nó hoạt động. Đối với ràng buộc UWP mặc định, tôi đang làm việc với chức năng CodeSnipped. Với eventhandling bạn có thể hành động trong suốt. Kết quả của codeSnippet tôi cho UWP trông như thế này cho mẫu của tôi:
#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, Store, VS 2017, Microsoft.NETCore.UniversalWindowsPlatform Version 5.2.3
Tôi không chắc chắn bạn đã đăng câu trả lời này cho câu hỏi đúng ... bạn đã đọc thêm hơn _how để tôi xác định một DependencyProperty_? –
Xin lỗi. Đối với UWP AffectsMeasure không được hỗ trợ. Đối với Framework 3+ nó hoạt động. Chỉ cần thay thế 'FrameworkPropertyMetadata' bằng' PropertyMetadata' và sử dụng không gian tên 'namespace Windows.UI.Xaml' trong ViewModel của bạn. Như tôi đã hiểu, điều đó sẽ giải quyết chính xác vấn đề của bạn và trả lời câu hỏi của bạn. – Nasenbaer
Vâng, đó là càng nhiều thông tin như tôi đã đăng trong câu hỏi của tôi. Và không, câu hỏi của tôi không được giải quyết. Nếu bạn đọc kỹ, tôi muốn một thuộc tính phụ thuộc kích hoạt một giá trị đo mới. Bởi vì đó là những gì 'InvalidateMeasure' đã làm. Ví dụ của bạn sẽ kích hoạt một phép đo mới vì Ràng buộc đi đến Khả năng hiển thị. Hãy thử 'Tag' và cho tôi biết nó hoạt động. –