Привязка фокуса к текстовому тексту в WPF - PullRequest
1 голос
/ 21 февраля 2011

Я хотел бы привязать текущий фокус к текстовому тексту. В моей системе меню есть модель представления, которая содержит список ButtonViewModels в виде datacontext. Как бы я мог определить фокусировочную кнопку по текстовому тексту?

Существует FocusManager.FocusedElement, но эта ссылка на элемент управления и идею ViewModel не должна зависеть от реализации View ...

1 Ответ

3 голосов
/ 21 февраля 2011

Я пытался поместить DataTrigger в стиль Button, который связывается со свойством IsFocused в 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>
...