Поведение ListBox заключается в том, что первый элемент выбирается автоматически, как я могу избежать этого?
Примечание. Я предпочитаю делать это с помощью чистого xaml, если у вас есть идеи с кодом, пожалуйста, не беспокойтесь.
Поведение ListBox заключается в том, что первый элемент выбирается автоматически, как я могу избежать этого?
Примечание. Я предпочитаю делать это с помощью чистого xaml, если у вас есть идеи с кодом, пожалуйста, не беспокойтесь.
Ну, я попробовал это с помощью FocusManager.FocusedElement.. и сделал основной фокус на
listbox сам.. поэтому он имеет фокус.. но ни один элемент не выбран.
если вы нажимаете вниз или вкладку. 1-й элемент списка будет выбран...
<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>
Try
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>
<ListBox SelectioMode="Single" SelectedIndex="-1"/>
Выбрал ли SelectedIndex свойство, которое вы ищете? Или, может быть, я не понимаю вашу точку зрения...
Та же проблема здесь. Кто-нибудь нашел "чистое" решение?
Проблема здесь та же, она вызывает выполнение нескольких триггеров.
Очевидное решение/исправить:
Добавить пустой элемент.