2015-11-14 10 views

Odpowiedz

-1

Przepraszamy. W przypadku produktu UWP AffectsMeasure nie jest obsługiwane. Dla Framework 3+ działa. Dla domyślnego wiązania UWP pracuję z funkcją CodeSnipped. Z obsługą zdarzeń możesz działać transparentnie. Efektem mojej codeSnippet dla UWP wygląda to dla mojego Model:

#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}}" /> 

systemu Windows 10, Sklep, VS 2017, Microsoft.NETCore.UniversalWindowsPlatform Version 5.2.3

+0

Nie jestem pewien, czy wysłałeś tę odpowiedź na poprawne pytanie ... Czy przeczytałeś dalej niż jak zdefiniowałem DependencyProperty_? –

+0

Przepraszamy. Dotyczy produktów UWP AffectsMeasure nie jest obsługiwane. Dla Framework 3+ działa. Po prostu zastąp 'FrameworkPropertyMetadata' przez' PropertyMetadata' i użyj przestrzeni nazw 'Windows.UI.Xaml' w swoim ViewModelu. Jak zrozumiałem, to będzie dokładnie rozwiązać twój problem i odpowiedzieć na twoje pytanie. – Nasenbaer

+0

Cóż, to tyle informacji, co napisałem w moim pytaniu. I nie, moje pytanie nie zostało rozwiązane. Jeśli dokładnie czytasz, chcę mieć właściwość zależności, która wyzwala nową przepustkę pomiarową. Ponieważ tak właśnie było "InvalidateMeasure". Twój przykład wyzwala nowe przejście pomiarowe, ponieważ wiązanie przechodzi do widoczności. Wypróbuj 'Tag' i powiedz, że to działa. –