2016-08-09 3 views
1

ボタンの折りたたみ状態に基づいてXAMLでフォーカスを変更しようとしています。トリガーは、私が一度だけ作成したConverter Iを実行します。私はコードを使用することができませんし、UIElementsの名前を付けることはできません。XAMLボタン設定の可視性のトリガーfocusmanager.focusedelementは1回だけ発生します

私は、以下の可視性のAutoCodeSuccessバインディングではなく、Datatriggerを使用するなどの多くのことを試みました。ここでも、コンバータは一度しか動作しません。ボタンの可視性に関するバインディングは問題ありませんので、私はDatatriggerでそのプロパティを使用することができると仮定しました。ここで

    <Button Grid.Column="2" VerticalAlignment="Bottom" HorizontalAlignment="Left" Margin="5" Visibility="{Binding AutoCodeSuccess, Converter={StaticResource ReverseBoolToVisCollapse}, FallbackValue=Visible}" Content="Auto-Code" Width="75" Command="{Binding AutoCodeClick}"> 
         <Button.Style> 
          <Style TargetType="{x:Type Button}" BasedOn="{StaticResource AccentedSquareButtonStyle}"> 
           <Style.Triggers> 
            <Trigger Property="Visibility" Value="Collapsed"> 
             <Setter Property="FocusManager.FocusedElement" Value="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource GetNextLogicalFocus}}"/> 
            </Trigger> 
           </Style.Triggers> 
          </Style> 
         </Button.Style> 
        </Button> 

はコンバータです:

Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.Convert 
    Dim curUIElement = DirectCast(value, UIElement) 
    curUiElement.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next)) 
    Return FocusManager.FocusedElementProperty 
End Function 

datatriggerが正常に動作し得ることができる任意の提案ですか?私はデータトリガ(可視性ではない)に関する私の前のコードをチェックして、これまでに問題がなかった。これは.NET Framework 4にあります。

答えて

1

PredictFocusの回避策がありますが、次は有効な選択肢ではないため、方向(上/下/左/右)を使用する必要があります。 DataTrigger

<Button Grid.Column="2" Margin="5" Width="75" 
     Content="Auto-Code" Command="{Binding AutoCodeClick}"> 
    <Button.Style> 
     <Style TargetType="{x:Type Button}" BasedOn="{StaticResource AccentedSquareButtonStyle}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding AutoCodeSuccess}" Value="false"> 
        <Setter Property="Visibility" 
          Value="Collapsed" /> 
        <Setter Property="FocusManager.FocusedElement" 
          Value="{Binding RelativeSource={RelativeSource Self}, 
            Converter={StaticResource GetNextLogicalFocus}}"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Button.Style> 
</Button> 
+0

ブリリアントを使用して

Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.Convert Dim curUIElement = DirectCast(value, UIElement) Return curUiElement.PredictFocus(FocusNavigationDirection.Down) End Function 

!あなたの答えに基づいて、可視性が拘束されていて、データトリガが可視性にあって、初めてデータトリガを使用したときにそのデータトリガをアンフックしたと仮定していると仮定しています。または、コンバーターが焦点を合わせていただけでなく、戻ってきたことが何らかの形でコンバータを外した可能性があります。また、predictfocusは、私がそのコンバーターで探していたものです。ちょうどそれは事ではないと仮定し、私が決して好きではなかった設定で他の方向に行った。 – Dustin

関連する問題