【发布时间】:2016-12-16 01:26:11
【问题描述】:
我正在尝试根据按钮的折叠可见性更改 XAML 中的焦点。触发器将运行我创建的转换器一次而不是再次。我无法使用后面的代码,也无法命名 UIElements。
我已经尝试了很多事情,例如使用 Datatrigger 代替 AutoCodeSuccess 在下面的可见性绑定。同样,它只会运行一次转换器。按钮可见性的绑定没有问题,所以我认为我可以将该属性与 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
有什么建议可以让数据触发器正常工作吗?我检查了我以前涉及数据触发器的代码(不是可见性),以前从未遇到过问题。这是在 .NET Framework 4 中。
【问题讨论】: