将焦点绑定到WPF中的datacontext

时间:2011-02-21 16:00:10

标签: wpf data-binding focus

我想将当前焦点绑定到datacontext。我的菜单系统有一个viewmodel,它包含一个ButtonViewModels列表作为datacontext。我如何通过datacontext确定聚焦按钮?

有一个FocusManager.FocusedElement,但这引用了一个控件,而ViewModel的想法是不依赖于View的实现......

1 个答案:

答案 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>