WPF выбранный элемент GridView при нажатии гиперссылки

У меня есть Telerik RadGridView, привязанный к коллекции, и я отправляю SelectedItem при нажатии гиперссылки в одной из ячеек. Это работает, но мне нужно сначала щелкнуть в другом месте строки, чтобы установить выбранный элемент. Это не идеально, и я хочу установить SelectedItem при нажатии на ссылку или что-либо в этом отношении.

Я видел, как это сделать для ListView с IsSelected и ListViewItem, но ничего для Telerik RadGridView или универсального GridView.

Вот моя ссылка:

<DataTemplate>
    <TextBlock Padding="3,0">
        <Hyperlink CommandParameter="{Binding SelectedItem,
            RelativeSource={RelativeSource FindAncestor,
            AncestorType={x:Type telerik:RadGridView}}}"
            Command="{Binding Path=DataContext.SomeCommand,
            RelativeSource={RelativeSource FindAncestor,
            AncestorType={x:Type telerik:RadGridView}}, Mode=OneWay}">
            Click here please
        </Hyperlink>
    </TextBlock>
</DataTemplate>

person aw04    schedule 26.06.2014    source источник


Ответы (1)


Я думаю, что вам нужно установить UIElement.IsKeyboardFocusWithin свойство. У меня есть эти два Style, которые я использую, чтобы щелчок по дочернему элементу управления отражался в ListBoxItem... вы можете просто изменить ListBoxItem на ListViewItem, и он все равно должен работать. Вы, вероятно, захотите применить первый Style, но я включил второй на случай, если первый не полностью соответствует вашим требованиям:

<Style x:Key="ListBoxItemSelectionStyle" TargetType="{x:Type ListBoxItem}">
    <Style.Triggers>
        <Trigger Property="IsKeyboardFocusWithin" Value="True">
            <Setter Property="IsSelected" Value="True" />
        </Trigger>
        <Trigger Property="IsKeyboardFocusWithin" Value="False">
            <Setter Property="IsSelected" Value="True" />
        </Trigger>
    </Style.Triggers>
</Style>
<Style x:Key="ListBoxItemSemiSelectionStyle" TargetType="{x:Type ListBoxItem}">
    <Style.Triggers>
        <Trigger Property="IsKeyboardFocusWithin" Value="True">
            <Setter Property="IsSelected" Value="True" />
        </Trigger>
    </Style.Triggers>
</Style>
person Sheridan    schedule 26.06.2014
comment
Спасибо за Ваш ответ. Это похоже на то, что я пробовал, но все еще не совсем работает. Будет ли ListViewItem как целевой тип работать с телериком RadGridView? - person aw04; 26.06.2014
comment
Это контейнеры для стандартных GridView, поэтому я думаю, что это также относится и к RadGridView. - person Sheridan; 26.06.2014