2009-05-06 101 views
14

在WPF中,我想設置一個System.Windows.Controls.ListBox編程選擇項/索引在ListBox

到目前爲止,我已經找到了我最佳的方式選擇的指標是要消除所有的從控件中插入選項,調用SelectAll(),然後插入其餘部分,但此解決方案既不適用於我的情況,也不是非常有效。

那麼,如何設置列表框中的項目以編程方式進行選擇?

回答

9

您可以執行此操作的一種方法是將選定字段添加到您的數據對象。然後,您需要覆蓋默認的listboxitem樣式,並將isselected屬性綁定到對象中的Selected屬性。然後你只需要瀏覽你的數據項並更新選定的值。

如果您沒有將Selected屬性實現爲依賴屬性,則需要您的類實現INotifyPropertyChanged接口,並在設置該值時引發propertychanged事件。

+0

這工作完美,非常感謝你! – Alex 2009-05-06 20:09:07

+0

謝謝!...這工作正常。我只需添加我在下面使用的代碼段。 – 2010-11-21 03:24:32

+0

實際上,與以下的danlash相比,這是過度複雜的。 – henon 2015-11-25 11:46:27

2

你必須這樣做:

ListBoxObject.SelectedItem = ListBoxObject.Items.GetItemAt(itemIndex); 

當的ItemIndex將要選擇的項目。 如果你想選擇多個項目,你需要使用ListBox.SelectedIndexCollection屬性。

+1

System.Windows.Controls.ListBox不像System.Windows.Forms.ListBox中的SelectedIndexCollection屬性 – Alex 2009-05-06 20:09:45

26

您可以通過使用SelectedItems集合來設置多個項目。這是不是指數,而是看你有什麼樣的約束:

foreach (var boundObject in objectsBoundToListBox) 
{ 
    ListBox.SelectedItems.Add(boundObject); 
} 
2

如何在WPF程序選擇列表框中的多個項目

foreach (var boundObject in objectsBoundToListBox) 
{ 
    ListBox.SelectedItems.Add(boundObject); 
} 
1

感謝mdm20。 我的情況實際上是在ListBox內檢查CheckBox,而這個依賴屬性就像一個魅力。 我不得不從DependencyObject繼承我的自定義類,並實現財產

public class ProjectListItem : DependencyObject{ 

    public Boolean IsChecked 
    { 
     get { return (Boolean)this.GetValue(CheckedProperty); } 
     set { this.SetValue(CheckedProperty, value); } 
    } 
    public static readonly DependencyProperty CheckedProperty = 
     DependencyProperty.Register("IsChecked", typeof(Boolean), typeof(ProjectListItem), 
            new PropertyMetadata(false)); 
} 
1

您可以爲多個部分做到這一點:

ListBoxObject.SelectedItems.Add(ListBoxObject.Items.GetItemAt(i)); 

其中i爲項目索引。