2016-10-07 13 views
1

Ich habe einige Probleme mit einer TextBox.Text Bindung in UWP. Ich habe seit Jahren WPF getan und in der Regel wissen, was ich in XAML mache aber nicht bekommen kann diese Bindung an der Arbeit ...UWP TextBox Textbindung funktioniert nicht

Ich habe einen Text und einen Knopf im gleichen Umfang in den XAML

<StackPanel Orientation="Horizontal" 
      Margin="0,10,0,0"> 
    <TextBox Width="200" Text="{Binding SearchText, UpdateSourceTrigger=PropertyChanged}"/> 
    <Button Margin="10,0,0,0" 
      Command="{Binding SearchBusCommand}">Go</Button> 
</StackPanel> 

und die gebundenen Eigenschaften sind im gleichen Umfang im Ansichtsmodell

public ICommand SearchBusCommand { get; } 

public string SearchText { get; set; } 

Aber, wenn ich Text in dem Text eingeben und den Button drücken, der Befehl ausgeführt wird und der Suchtext Wert null ...

Meine Erwartung ist, dass wenn ich Text in die TextBox eintippe, die SearchText Eigenschaft mit dem Text Wert aktualisiert wird.

Wenn ich den Wert der SearchText-Eigenschaft aus dem ViewModel festlegen, wird es in der TextBox angezeigt.

Antwort

2

Ok, es scheint, dass in UWP die Bindung für die TextBox.Text -Eigenschaft standardmäßig OneWay ist ..!

Ich musste die Bindung an TwoWay setzen, damit es funktioniert.

<TextBox Width="200" Text="{Binding SearchText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> 

WARUM WÜRDEN SIE DAS TUN !?

+0

Leistungsgründe. Und x: Bind ist OneTime standardmäßig – AlexDrenea

+0

@AlexDrenea aber warum möchten Sie OneWay auf TextBox.Text binden? Dafür ist ein TextBlock gedacht? –

+0

@GlenThomas Bindung verwendet Standardmodus OneWay überall, es hängt nicht von Steuerelement/Eigenschaft, wo es verwendet wird .. Es kann verwirrend sein, wenn es variiert wird –