2017-12-31 99 views
0

바인딩을 사용하여 이름을 빌드해야하지만 텍스트 상자 중 하나에 포커스가 없어 질 때마다 전체 이름이 작성됩니다. 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

이 작업을 해 주셔서 감사합니다. –