2015-11-14 3 views

Antwort

-1

Entschuldigung. Für UWP AffectsMeasure wird nicht unterstützt. Für Framework 3+ funktioniert es. Für die Standard-UWP-Bindung arbeite ich mit CodeSnipped-Funktionalität. Mit der Eventhandling können Sie transparent agieren. Das Ergebnis meiner CodeSnippet für UWP sieht wie folgt aus für mein Modell:

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

Microsoft Windows 10, Geschäft, VS 2017 Microsoft.NETCore.UniversalWindowsPlatform Version 5.2.3

+0

Ich bin nicht sicher, dass Sie diese Antwort auf die richtige Frage geschrieben haben ... haben Sie weiter gelesen als _wie definiere ich eine DependencyProperty_? –

+0

Entschuldigung. Für UWP AffectsMeasure wird nicht unterstützt. Für Framework 3+ funktioniert es. Ersetzen Sie 'FrameworkPropertyMetadata' durch' PropertyMetadata' und verwenden Sie den Namespace 'Namespace Windows.UI.Xaml' in Ihrem ViewModel. Wie ich verstanden habe, wird das genau dein Problem lösen und deine Frage beantworten. – Nasenbaer

+0

Nun, das sind so viele Informationen, wie ich in meiner Frage geschrieben habe. Und nein, meine Frage ist nicht gelöst. Wenn Sie sorgfältig lesen, möchte ich eine Abhängigkeitseigenschaft, die einen neuen Messdurchlauf auslöst. Denn das hat "InvalidateMeasure" getan. Ihr Beispiel löst einen neuen Messdurchgang aus, weil die Bindung an Sichtbarkeit geht. Probieren Sie "Tag" und sagen Sie mir, es funktioniert einfach. –