UpdateSourceTrigger in WinRT

Wie met Silverlight of met WPF heeft gewerkt en MVVM regelmatig toepast zal ongetwijfeld the UpdateSourceTrigger wel is hebben aangepast. Vooral bij bindings naar een geselecteerd item is het erg handig en vaak noodzakelijk om de ingevoerde tekst bij het juiste item terug te krijgen. Helaas is de UpdateSourceTrigger weg gehaald bij WinRT.

De andere oplossing om de update te forceren van via GetBindingExpression() maar ook die is helaas niet aanwezig.

Een andere oplossing zou zijn om een eventhandler op bv TextChanged van een TextBox te implementeren. Maar ben hier niet zo fan van daar je nu buiten de binding om gaat werken, en waarom zou je dan uberhaupt nog bindings gebruiken?

 

ik heb zelf een wrapper control gemaakt:

public class BindableTextBox : TextBox
    {
        public string BindableText
        {
            get { return (string)GetValue(BindableTextProperty); }
            set { SetValue(BindableTextProperty, value); }
        }

        // Using a DependencyProperty as the backing store for BindableText.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty BindableTextProperty =
            DependencyProperty.Register("BindableText", typeof(string), typeof(BindableTextBox), new PropertyMetadata("", OnBindableTextChanged));

        private static void OnBindableTextChanged(DependencyObject sender, DependencyPropertyChangedEventArgs eventArgs)
        {
            ((BindableTextBox)sender).OnBindableTextChanged((string)eventArgs.OldValue, (string)eventArgs.NewValue);
        }

        public BindableTextBox()
        {
            TextChanged += BindableTextBox_TextChanged;
        }

        private void OnBindableTextChanged(string oldValue, string newValue)
        {
            Text = newValue ? ? string.Empty; // null is not allowed as value!
        }

        private void BindableTextBox_TextChanged(object sender, TextChangedEventArgs e)
        {
            BindableText = Text;
        }    
    }

Nu kan je tegen de nieuwe property BindableText aanbinden en word ook direct geupdate.

  •   having a fun afternoon with #fluent and #rome ; let see if can make something publishable
  •   RT @pag3rd: If you'll be at #MSIgnite and want to learn about what's new with #XAML #FluentDesign and the brand new #WinUI library come to…
  •   RT @kevintgallo: What’s your favorite color? https://t.co/GvhJIb4ItX
  •   @shanselman @tomasrestrepo @h0x0d @joncaves does it mean @satyanadella holds the mic for you next time at build?
  •   @BNR De eindstand (aangekomen op bestemming) https://t.co/DXxHPP57iy
  •   Toch even aan die conditie werken.. Je weet maar nooit @bnr #fiemibo https://t.co/H61vOPrtVi
  •   RT @donasarkar: Hello #WindowsInsiders we have released 19H1 Build 18242 to Skip Ahead! https://t.co/kuo5Y9jt0i
  •   @BNR Zines de 2 jaar dat ik bij bnr heb gewerkt 😊 #ikhoorbijbnr
  •   @JenMsft is there a way to get notfication mirring from android to win desktop without the cortana app (its not available in netherlands)
  •   @tomverhoeff @bartlannoeye i agree with bart in this.. been seeing enough 'good speakers' just delivering 101 sessions all the time