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