Поведението на ListBox е, че първият елемент се избира автоматично, как мога да избегна това??
Забележка: Предпочитам да направя това с чист xaml, ако имате някакви идеи за кода, моля, не се притеснявайте.
Поведението на ListBox е, че първият елемент се избира автоматично, как мога да избегна това??
Забележка: Предпочитам да направя това с чист xaml, ако имате някакви идеи за кода, моля, не се притеснявайте.
Ами пробвах това с помощта на FocusManager.FocusedElement .. и направих първоначалния фокус към
самото списъчно поле.. така че има фокуса..но не е избран елемент.. ако натиснете надолу или раздела ..първият елемент от списъкът ще бъде избран...
<Window
......
FocusManager.FocusedElement="{Binding ElementName=listbox2}">
<ListBox x:Name="listbox2" HorizontalAlignment="Left"
VerticalAlignment="Bottom" Width="117.333" Height="116"
Margin="30.667,0,0,30">
<ListBoxItem>Jim</ListBoxItem>
<ListBoxItem>Mark</ListBoxItem>
<ListBoxItem>Mandy</ListBoxItem>
</ListBox>
Опитвам
IsSynchronizedWithCurrentItem="False"
премахнете IsSynchronizedWithCurrentItem="True" и го добавете със следващото събитие SelectionChanged, ако е необходимо. Това реши проблема ми
Можете да зададете SelectedIndex на -1:
<ListBox ItemsSource="{Binding MyData}" SelectedIndex="-1"/>
Забележка: Искам да направя това с чист xaml, ако имате някакви идеи за кода, моля, не се притеснявайте.
За съжаление не можете да правите всичко в XAML... обикновено можете да избегнете задния код, но все пак трябва да пишете конвертори, разширения за маркиране или прикачени свойства
Ето една техника, която използвам доста често. Той се основава на горния пример за добавяне на атрибута FocusedElement
към вашите Window
или UserControl
.
Моята сделка е, че не искам НИКОЙ контрол на моя прозорец да има фокус. Решението за мен е да създам фиктивен контрол, който няма потребителски интерфейс и да присвоя фокус на това. Просто така се случи, че Control
пасва идеално на сметката:
<UserControl
x:Class="MyControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FocusManager.FocusedElement="{Binding ElementName=focus_thief}"
mc:Ignorable="d">
<Grid>
<!-- no renderable UI -->
<Control Name="focus_thief"/>
<!-- wants focus, but won't get it -->
<ListBox>
<ListBoxItem>First Item</ListBoxItem>
</ListBox>
</Grid>
</UserControl>
SelectedIndex ли е собствеността, която търсите? Или може би не разбирам мисълта ти...
Същият проблем тук. Някой да е намерил "чисто" решение?
Проблемът тук е същият, кара множество тригери да се изпълняват.
Очевидно решение/поправка:
Добавяне на празен елемент.