2016-07-17 7 views
0

両方のtxtBoxからフォーカスが失われると(「」フィールド)、それらを非表示にしたいと思う。 "GrdAmountInDollars"がまったく表示されないため、私が試したオプションについてコメントしました。 アイデア?事前に THXLostFocusのコントロールを非表示にする

私のXAML:

<Window x:Class="WpfApplication1.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 

    Title="MainWindow" Height="150" Width="525" FlowDirection="LeftToRight"> 

<Window.Resources> 

    <Style x:Key="MyTemplate" TargetType="{x:Type ContentControl}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type ContentControl}"> 
        <Grid VerticalAlignment="Center" HorizontalAlignment="Stretch" Margin="0,4,0,0" Height="60"> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="2"/> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="2"/> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="2"/> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="4"/> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="4"/> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="2"/> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="2"/> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="2"/> 
          <ColumnDefinition Width="Auto"/> 
         </Grid.ColumnDefinitions> 

         <TextBlock Grid.Column="0" Focusable="False" Text="From amt" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="0"/> 
         <TextBox x:Name="tbxMinQtyRange" Grid.Column="2" MaxLength="12" 
              Text="{Binding MinQtyRange, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
              HorizontalAlignment="Stretch" Width="54" Padding="0" Margin="0" Height="20" VerticalAlignment="Center" Grid.ColumnSpan="1" /> 

         <TextBlock Grid.Column="4" Focusable="False" Text="To amt" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="0" /> 
         <TextBox x:Name="tbxMaxQtyRange" Grid.Column="6" MaxLength="12" 
             Text="{Binding MaxQtyRange, Mode=TwoWay, UpdateSourceTrigger=LostFocus}" 
             HorizontalAlignment="Stretch" Width="54" Padding="0" Margin="0" Grid.ColumnSpan="1" Height="20" VerticalAlignment="Center" /> 



         <CheckBox x:Name="chkAmountInValue" FlowDirection="LeftToRight" Grid.Column="8" HorizontalAlignment="Right" Margin="0" Grid.ColumnSpan="1" VerticalAlignment="Stretch"/> 
         <TextBlock x:Name="textBlock" Grid.Column="10" Focusable="False" Text="value" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="0" /> 

         <Grid x:Name="GrdAmountInDollars" Grid.ColumnSpan="7" Grid.Column="10" Visibility="Collapsed"> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="Auto"/> 
           <ColumnDefinition Width="2"/> 
           <ColumnDefinition Width="Auto"/> 
           <ColumnDefinition Width="2"/> 
           <ColumnDefinition Width="Auto"/> 
           <ColumnDefinition Width="2"/> 
           <ColumnDefinition Width="Auto"/> 
          </Grid.ColumnDefinitions> 

          <TextBlock Grid.Column="0" Focusable="False" Text="value" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="0"/> 
          <TextBox x:Name="TbxMinValRange" Text="{Binding MinValRange, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Grid.Column="2" Width="54" 
        Margin="0" Height="20" VerticalAlignment="Center"/> 

          <TextBlock Grid.Column="4" Focusable="False" Text="to" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="0" /> 
          <TextBox x:Name="TbxMaxValRange" Text="{Binding MaxValRange, Mode=TwoWay, UpdateSourceTrigger=LostFocus}" Width="54" 
        Margin="0" Height="20" Grid.Column="6"/> 



         </Grid> 

        </Grid> 

        <ControlTemplate.Triggers> 
         <Trigger SourceName="chkAmountInValue" Property="IsChecked" Value="True"> 
          <Setter TargetName="textBlock" Property="Visibility" Value="Collapsed"/> 
          <Setter TargetName="GrdAmountInDollars" Property="Visibility" Value="Visible"/> 
          <Setter TargetName="TbxMinValRange" Property="FocusManager.FocusedElement" 
              Value="{Binding RelativeSource={RelativeSource Self}}"/> 
         </Trigger> 

         <!--<MultiTrigger> 
          <MultiTrigger.Conditions> 
           <Condition SourceName="TbxMinValRange" Property="IsFocused" Value="False"/> 
           <Condition SourceName="TbxMaxValRange" Property="IsFocused" Value="False"/> 
          </MultiTrigger.Conditions> 
          <MultiTrigger.Setters> 
           <Setter TargetName="chkAmountInValue" Property="IsChecked" Value="False"/> 
          </MultiTrigger.Setters> 
         </MultiTrigger>--> 
        </ControlTemplate.Triggers> 

       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

</Window.Resources> 

<ContentControl Style="{StaticResource MyTemplate}" IsTabStop="False"/> 
</Window> 

答えて

1

以下のコードとコメントしたコードを置き換えます。 MultiTriggersはおよびのように動作するため、コードが機能しません。つまり、両方のテキストボックス 'IsFocused'がfalseに設定されている場合、チェックボックスのみがオフになります。

<DataTrigger Binding="{Binding ElementName=TbxMinValRange, Path=IsFocused}" Value="False"> 
<Setter TargetName="chkAmountInValue" Property="IsChecked" Value="False"/> 
</DataTrigger> 

<DataTrigger Binding="{Binding ElementName=TbxMaxValRange, Path=IsFocused }" Value="False"> 
<Setter TargetName="chkAmountInValue" Property="IsChecked" Value="False"/> 
</DataTrigger> 
+0

ありがとうございます。私はそれが** "と" **と一緒にいて欲しい。ただし、あなたの答えがあなたの行動を変えることはありません。 – eran

+0

コードで説明されているように、チェックボックスステータスの後ろに他のロジックがある可能性があります。それを知らずに、私はあなたがそれを修正することはできません。 – ViVi

+0

現在、コードはありません。そのような必要がある場合は、plzのアドバイス、私はどのようなコードを追加する必要があります – eran

関連する問題