2009-09-09 4 views
10

Поведение ListBox заключается в том, что первый элемент выбирается автоматически, как я могу избежать этого?ListBox всегда автоматически выбирает первый элемент

Примечание: Я предпочитаю делать это с помощью чистого xaml, если у вас есть идеи с кодом, пожалуйста, не беспокойтесь.

+0

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

+0

1) для того, кто поставил мой вопрос как дубликат, вы не поняли вопрос, я тот, кто разместил дубликат. 2) @Madi. Когда отображается список, его первый элемент выбирается автоматически, я хочу отключить эту функцию. – Shimmy

+0

hmm .. вы можете использовать FocusManager для фокусировки на определенный элемент/элемент .. (все в xaml) ...однако я не могу понять, как заставить его сосредоточиться ни на что: D –

ответ

5

Ну я попытался это с помощью FocusManager.FocusedElement .. и сделал intial фокус
сам ListBox .. поэтому имеет focus..but нет элемент выбран .. если и нажмите вниз или вкладки будет выбран ..следующий первый элемент ListBox ...

<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> 
4

Вы можете установить SelectedIndex -1:

<ListBox ItemsSource="{Binding MyData}" SelectedIndex="-1"/> 

Примечание: Я хочу сделать это с чистым XAML, если у вас есть какие-либо кода позади идеи, пожалуйста, не беспокоить себя.

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

+1

Я искал ответ так же, как ваш. Единственная крошечная проблема - это не работает. – Shimmy

+2

он не работает :) –

+1

+1, вы не можете делать все в XAML. – user7116

1

Является SelectedIndex собственности вы находясь в поиске ? Или, может быть, я не понимаю вашу точку ...

+1

вы получили мою мысль, но когда я установил selectedindex в -1 или альтернативно выбранный элемент в x: Null, первый элемент все еще выбран – Shimmy

1
<ListBox SelectioMode="Single" SelectedIndex="-1"/> 
+0

Я не хочу, чтобы режим выбора был Single. – Shimmy

-1

Добавить пустой элемент.

1

Такая же проблема здесь. Кто-нибудь нашел «чистое» решение?
Проблема здесь же, она вызывает кучу триггеров.

Очевидное решения/исправление:
1) Удалить обработчик событий SelectionChanged из XAML
2) Добавить обработчик в конструкторе после InitializeComponents загрузило ListBox.

+0

Связанные вопросы и комментарии shuold - комментарии к существующей. – Shimmy

8

Попробуйте

IsSynchronizedWithCurrentItem="False"

5

удалить IsSynchronizedWithCurrentItem = "True" Надстройка его следующего SelectionChanged случае, если это необходимо. Это решило мою проблему

2

Вот техника, которую я использую довольно часто. Он основывается на приведенном выше примере добавления атрибута 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> 
Смежные вопросы