2009-09-09 82 views
10

ListBox的行爲是第一個項目被自動選擇,我該如何避免?ListBox始終自動選擇第一個項目

注:我更喜歡用純xaml來做這個,如果你有任何代碼隱藏的想法,那麼請不要打擾你自己。

+0

我覺得你的意思,即當u將焦點移到列表框,第一個項目總是選擇? (突出顯示..如果你按下,第二項獲得焦點?) – 2009-09-09 10:19:43

+0

1)對於標記我的問題爲重複的人,你不明白這個問題,我也是發佈重複的人。 2)@Madi,當列表框被渲染時,它的第一個項目被自動選中,我想禁用這個功能。 – Shimmy 2009-09-09 10:30:30

+0

hmm ..您可以使用FocusManager將焦點集中到某個項目/元素中(全部在xaml中)...但我不知道如何使它專注於什麼:D – 2009-09-09 10:34:05

回答

5

那麼我想這使用FocusManager.FocusedElement ..並取得了INTIAL重點
列表框本身..所以它具有focus..but沒有元素被選中.. 如果u按下或標籤列表框的..the第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> 
4

您可以設置的SelectedIndex爲-1:

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

注:我想用純XAML要做到這一點,如果您有任何代碼背後的想法,那麼請不要打擾自己。

可惜你不能在XAML中做的一切......你通常能避免代碼隱藏,但你仍然需要寫一些轉換器,標記擴展或附加屬性

+1

我正在尋找一個像你的答案。 唯一的小問題是它不起作用。 – Shimmy 2009-09-09 10:26:06

+2

它不工作:) – 2009-09-09 10:32:32

+1

+1,你不能在XAML中做所有事情。 – user7116 2009-09-09 18:01:35

1

是SelectedIndex的你的財產尋找 ?或者,也許我不明白你的意思......

+1

你得到了我的觀點,但是當我將selectedindex設置爲-1或者將選定項目設置爲x:Null時,第一項仍然被選中 – Shimmy 2009-09-09 10:32:34

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

我不希望選擇模式爲Single。 – Shimmy 2009-09-09 20:25:52

-1

添加一個空白項。

1

這裏的問題相同。任何人都找到了「乾淨的」解決方案
這裏的問題是一樣的,它會導致一堆觸發器執行。

明顯的解決辦法/修復:
1)從XAML
2取出SelectionChanged事件處理程序)添加處理程序在構造InitializeComponents已加載列表框後。

+0

相關的問題和評論shuold現有評論。 – Shimmy 2010-04-07 10:15:58

8

嘗試

IsSynchronizedWithCurrentItem="False"

5

刪除IsSynchronizedWithCurrentItem = 「真」 的下一個SelectionChanged事件,如果需要添加它。 這解決了我的問題

2

這是我經常使用的技術。它建立在上述將FocusedElement屬性添加到您的WindowUserControl的示例上。

我的交易是我不希望我的窗口上的任何控件都有焦點。對我來說,解決方案是創建一個虛擬控件,它沒有UI並將焦點分配給它。它只是恰巧,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> 
相關問題