2017-12-31 302 views
0

名前を作成するためにバインドを一方的に行う必要がある割り当てがありますが、テキストボックスの1つがフォーカスを失うたびにフルネームが作成されます。 updateSourceTrigger = LostFocusはnog twowayバインディングのため動作しません。片道でこれを行う可能性はありますか? C#oneway要素のバインディングの更新時にフォーカスが失われました

<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> 

答えて

0

私はこれがWPFであると仮定していますか?あなたが使用しているデザインの種類に応じて、

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

あなたはその後、((TextBox)sender).Textへのアクセス権を持っていると思います:あなたはLostFocusイベントを処理することができ

一つ

あなたは(あなたはおそらくあなたのプロジェクトにSystem.Windows.Interactivityへの参照を追加する必要があります)、パラメータとしてテキストを渡し、LostFocusイベントが発生したときにコマンドを実行するSystem.Windows.Interactivityを使用することができます。

<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

これはうまくいきました、ありがとうございました! –

関連する問題