2017-12-31 147 views
0

Ich habe einen Auftrag, wo ich bindet an oneway einen Namen zu bauen, aber der vollständige Name konzentriert jedes Mal eines der Textfelder gebaut verliert. updateSourceTrigger = LostFocus funktioniert nicht, da es nicht zwei Tage bindet. gibt es eine Möglichkeit, dies mit Oneway zu tun?C# oneway Element auf dem Fokus verloren Binding-Update

<Window x:Class="name_binder.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:name_binder" 
     mc:Ignorable="d" 
     Title="MainWindow" Height="350" Width="575"> 
    <Grid> 
     ... 
     <StackPanel Orientation="Vertical" Grid.Column="1" Grid.Row="2"> 
      <TextBox Name="firstNameTextBox" Margin="7.5" Height="35" FontSize="20" Text="&lt;Enter first name>" GotFocus="TextBox_gotFocus"></TextBox> 
      <TextBox Name="LastNameTextBox" Margin="7.5" Height="35" FontSize="20" Text="&lt;Enter last name>" GotFocus="TextBox_gotFocus"></TextBox> 
      <StackPanel Orientation="Horizontal"> 
       <TextBox Margin="7.5" Height="35" FontSize="20" BorderThickness="0" Text="{Binding Path=Text, ElementName=firstNameTextBox, Mode=OneWay, UpdateSourceTrigger=LostFocus}"/> 
       <TextBox Margin="7.5" Height="35" FontSize="20" BorderThickness="0" Text="{Binding Path=Text, ElementName=LastNameTextBox, Mode=OneWay, UpdateSourceTrigger=LostFocus}"/> 
      </StackPanel> 
     </StackPanel> 
    </Grid> 
</Window> 

Antwort

0

Ich nehme an, das ist WPF?

Je nachdem, welche Art von Design Sie verwenden:

One

Sie konnten die LostFocus Ereignis behandeln:

<TextBox x:Name="tb" Text="{Binding SomeText, Mode=OneWay}" LostFocus="tb_LostFocus"> 

Sie dann Zugriff auf ((TextBox)sender).Text haben würde.

Zwei

Sie System.Windows.Interactivity verwenden könnte, einen Befehl auszuführen, wenn das LostFocus Ereignis eintritt, wird der Text als Parameter übergeben (Sie werden wahrscheinlich benötigen einen Verweis auf System.Windows.Interactivity zu einem Projekt hinzugefügt werden):

<Window ... xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" ... > 
... 
<TextBox x:Name="tb" Text="{Binding SomeText, Mode=OneWay}"> 
    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="LostFocus"> 
      <i:InvokeCommandAction Command="{Binding SomeCommand}" 
            CommandParameter="{Binding Text, ElementName=tb}" /> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 
</TextBox> 
+0

dies funktioniert, vielen Dank! –

Verwandte Themen