Автоматическая фокусировка частей ListBoxItem на выделение - PullRequest
1 голос
/ 15 декабря 2008

У меня есть ListBox, который заполняется из коллекции ViewModels, которая использует редактирование на месте, что я делаю, имея пару стилей, которые я могу применить к частям DataTemplate, которые делают их видимыми / свернутыми по мере необходимости. Это выглядит примерно так:

<Style
    x:Key="UnselectedVisibleStyle"
    TargetType="{x:Type FrameworkElement}">
    <Setter
        Property="Visibility"
        Value="{Binding Path=IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}, Converter={StaticResource boolToVis}, ConverterParameter=False}" />
</Style>
<Style
    x:Key="SelectedVisibleStyle"
    TargetType="{x:Type FrameworkElement}">
    <Setter
        Property="Visibility"
        Value="{Binding Path=IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}, Converter={StaticResource boolToVis}, ConverterParameter=True}" />
</Style>

С моим ListBox, имеющим ItemTemplate, заданный что-то вроде:

    <ListBox.ItemTemplate>
        <DataTemplate>
             <Grid>                      
                <TextBlock
                    Text="{Binding Name}"
                    Style="{StaticResource UnselectedVisibleStyle}" />
                <TextBox
                    x:Name="textBox"
                    Text="{Binding Name}"
                    Style="{StaticResource SelectedVisibleStyle}" />
             </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>

Это прекрасно работает, но в идеале я хочу, чтобы TextBox автоматически выбирался, когда пользователь щелкает элемент, в идеале - в общем, обычным способом, который я могу использовать в своем проекте, и без лишних проблем в моем коде.

Спасибо, DM.

1 Ответ

0 голосов
/ 16 декабря 2008

Мне показалось, что следующие изменения в выбранном вами стиле:

<Style x:Key="SelectedVisibleStyle" TargetType="{x:Type FrameworkElement}">
    <Setter Property="Visibility" Value="{Binding Path=IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}, Converter={StaticResource boolToVis}, ConverterParameter=True}"/>
    <Style.Triggers>
        <Trigger Property="Visibility" Value="Visible">
            <Setter Property="FocusManager.FocusedElement" Value="{Binding RelativeSource={RelativeSource Self}}"/>
        </Trigger>
    </Style.Triggers>
</Style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...