我想将当前焦点绑定到datacontext。我的菜单系统有一个viewmodel,它包含一个ButtonViewModels列表作为datacontext。我如何通过datacontext确定聚焦按钮?
有一个FocusManager.FocusedElement,但这引用了一个控件,而ViewModel的想法是不依赖于View的实现......
答案 0 :(得分:3)
我尝试在Button
样式中放置一个DataTrigger,它绑定到IsFocused
和Setter Bind ButtonViewModel
中名为FocusManager.FocusedElement
的属性绑定到IsFocused的按钮设置为true。这应该允许您直接从ButtonViewModel
<ItemsControl ItemsSource="{Binding ButtonViewModels}">
<ItemsControl.Resources>
<Style x:Key="FocusBindingStyle" TargetType="Button">
<Style.Triggers>
<DataTrigger Binding="{Binding IsFocused}" Value="True">
<Setter Property="FocusManager.FocusedElement"
Value="{Binding RelativeSource={RelativeSource Self}}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ItemsControl.Resources>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="Test" Style="{StaticResource FocusBindingStyle}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>