WPF ListView select при наведении мыши

285
30 марта 2019, 11:30

Как бы поменять поведение ListView чтоб выбор записи происходил сразу, по фокусу мыши или клавиш навигации ?

Не соображу где это должно быть, что имеем:

<ListView
    x:Name="listText"
    Grid.Row="0" Grid.Column="0"
    Margin="10,2,0,2"
    Height="250"
    BorderThickness="1"
    SelectedIndex="-1"
    ItemsSource="{local:SettingBinding TextToSend}"
    Style="{StaticResource VirtualisedMetroListView}">
    <ListView.View>
        <GridView>
            <GridViewColumn Width="850">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <TextBox
                            Text="{Binding Mode=OneTime}"
                            BorderThickness="0"
                            Background="Transparent"
                            IsReadOnly="True"
                            MouseDoubleClick="txt_MouseDoubleClick"
                            KeyDown="txt_KeyDown"
                            CtrlMh:TextBoxHelper.Watermark="Enter new text"
                            CtrlMh:TextBoxHelper.WatermarkWrapping="WrapWithOverflow"
                            SpellCheck.IsEnabled="{local:SettingBinding IsSpellCheck}"
                            Width="{Binding ActualWidth, ElementName=listText, Mode=OneWay}"/>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>

UPD Возможный вариант решения:

<ListView
    x:Name="listText"
    Grid.Row="0" Grid.Column="0"
    Margin="10,2,0,2"
    Height="250"
    BorderThickness="1"
    SelectedIndex="-1"
    ItemsSource="{local:SettingBinding TextToSend}"
    Style="{StaticResource VirtualisedMetroListView}">
    <ListView.ItemContainerStyle>
        <Style TargetType="{x:Type ListViewItem}">
            <Style.Triggers>
                <Trigger Property="IsKeyboardFocusWithin" Value="True">
                    <Setter Property="IsSelected" Value="True" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.View>
        <GridView>
            <GridViewColumn Width="820">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <TextBox
                            Text="{Binding Mode=OneTime}"
                            BorderThickness="0"
                            Background="Transparent"
                            IsReadOnly="True"
                            MouseDoubleClick="txt_MouseDoubleClick"
                            KeyDown="txt_KeyDown"
                            CtrlMh:TextBoxHelper.Watermark="Enter new text"
                            CtrlMh:TextBoxHelper.WatermarkWrapping="WrapWithOverflow"
                            SpellCheck.IsEnabled="{local:SettingBinding IsSpellCheck}"
                            Language="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Page}},Path=DataContext.CultureCurent}"
                            Width="{Binding ActualWidth, ElementName=listChatText, Mode=OneWay}">
                            <SpellCheck.CustomDictionaries>
                                <CtrlSys:Uri>pack://application:,,,/spellwords.lex</CtrlSys:Uri>
                            </SpellCheck.CustomDictionaries>
                        </TextBox>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>
Answer 1

Например, с помощью триггера:

<ListBox ItemsSource="{Binding Items}">
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="IsSelected" Value="True"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </ListBox.ItemContainerStyle>
</ListBox>

READ ALSO
Как правильно сделать Dependency Injection. Теоретический вопрос

Как правильно сделать Dependency Injection. Теоретический вопрос

Изучаю вопрос связанный с IOC (Инверсия управления), как я понял это некий абстрактный паттерн, который говорит,что нужно делать слабое связывание...

169
Вывод/чтение из консоли WinForms C#

Вывод/чтение из консоли WinForms C#

Столкнулся с проблемойПриложение WinForms, хочу вывести некоторую информацию в консоль

170
Как сделать выдвигаемое меню в unity3d

Как сделать выдвигаемое меню в unity3d

Как сделать так, чтобы сделать выдвигаемое меню свайпом, но не просто, чтобы после свайпа отображался объект, а чтобы и сама менюшка выезжала...

187
SelectedItem C# WPF вместо SelectionChanged

SelectedItem C# WPF вместо SelectionChanged

Что лучше использовать? Вместо SelectionChanged использовать SelectedItem

160