2015-11-14 14 views

risposta

-1

Siamo spiacenti. Per UWP AffectsMeasure non è supportato. Per Framework 3+ funziona. Per il binding UWP predefinito sto lavorando con la funzionalità CodeSnipped. Con l'eventhandling puoi agire in modo trasparente. Il risultato della mia codeSnippet per UWP simile a questa per il mio modello:

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

di Windows 10, Negozio, VS 2017, Microsoft.NETCore.UniversalWindowsPlatform Versione 5.2.3

+0

Non sono sicuro che tu abbia postato questa risposta alla domanda corretta ... hai letto oltre a _how definisco una DependencyProperty_? –

+0

Siamo spiacenti. Per UWP AffectsMeasure non è supportato. Per Framework 3+ funziona. Basta sostituire 'FrameworkPropertyMetadata' con' PropertyMetadata' e utilizzare namespace 'namespace Windows.UI.Xaml' nel ViewModel. Come ho capito, ciò risolverà il tuo problema e risponderà alla tua domanda. – Nasenbaer

+0

Bene, questa è la quantità di informazioni che ho inserito nella mia domanda. E no, la mia domanda non è risolta. Se leggi attentamente voglio una proprietà di dipendenza che attivi un nuovo passaggio di misurazione. Perché è quello che ha fatto InvalidateMeasure. Il tuo esempio attiva un nuovo passaggio di misura perché la rilegatura va a Visibilità. Prova "Tag" e dimmi che funziona. –