2016-04-06 21 views
0

Birleşik kutunun öğelerinin dinamik olduğu bir listenin içinde bir combobox var. Seçilen öğenin yardımıyla belirlenecektir.WPF combobox'ı değiştirilmiş koleksiyonla bağlama

Örneğin: Seçili öğeyi Öğe1 sonra combobox Öğe1, Öğe2'yi, ITEM3 içermelidir ancak seçilen öğe ise Item2 sonra açılan kutu bağlama kullanarak aynı ulaşmak için nasıl Öğe2'yi, ITEM3, ITEM4

içermelidir ise.

Şu anda koleksiyonumda SelectedValue ve ListValues ​​adında iki özellik ayarlıyorum ve bunları birleşik girişimle bağladım, ancak yalnızca listenin ilk öğesini seçip kalanını olduğu gibi bırakıyorum. i ilk ItemSource ürün seçilecektir böylece SelectedValue ayarlanmalıdır sonra aramak istediğiniz kadar

Ayrıca bağlama verilerin yürütme sırasını budur.

Herhangi bir yardım için minnettarız.

İşte benim gayretlerim çalışıyor ama doğru olup olmadığından emin değilim.

C#

public string SelectedValue 
{ 
    get 
    { 
     PropertyChanged.Invoke(this, new System.ComponentModel.PropertyChangedEventArgs("Values")); 
     return _value; 
    } 
    set 
    { 
     if (value != null) //It will be null when binding of values happens 
     { 
      _value = value; 
      PropertyChanged.Invoke(this, new System.ComponentModel.PropertyChangedEventArgs("Values")); 
      PropertyChanged.Invoke(this, new System.ComponentModel.PropertyChangedEventArgs("SelectedValue")); 
     } 
    } 
} 

public IList<SomeType> Values 
{ 
    get 
    { 
     string status =_status; 
     return SomeFunctionToReturnValues(status); 
    } 
} 

XAML

<ComboBox SelectedValue="{Binding SelectedValue}" SelectedValuePath="Id" DisplayMemberPath="Text" Width="120" ItemsSource="{Binding Values,Mode=OneWay}"></ComboBox> 

yorum ve kimse burada beni daha iyi öneri sağlayabilir bana bildirin lütfen.

+0

Bind 'ObservableCollection ' ve 'Item' olduğunda VM, sırasıyla, sırasıyla "ItemsSource" ve "Comectedbox" ın "SelectedItem" i seçilmiştir. 'SelectedItem' – Gopichandar

+0

kodundaki değişikliklere göre koleksiyonu değiştirin lütfen? .. – Muds

+0

Sipariş önce itemsource selecteditem ise, itemsource yoksa öğe seçemezsiniz. – adminSoftDK

cevap

1

Sen ItemsSource özelliği kullanmak shold

<ComboBox SelectedItem="{Binding MyNum}" ItemsSource="{Binding Numbers}" Width="100" Height="30"/> 

Yani sınır için:

// Fills up combo box 
public IEnumerable<int> Numbers 
{ 
    get 
    { 
     IEnumerable<int> temp = MyCollection.ToList(); 
     return temp.SubArray(MyNum,MyCollection.count); 
    } 
} 

private int _myNum 
public int MyNum 
{ 
    get 
    { 
     return _myNum; 
    } 
    set 
    { 
     _myNum = value; 
     OnPropertyChanged("MyNum"); 
    } 
} 

altdizilim (Credit)

public static T[] SubArray<T>(this T[] data, int index, int length) 
{ 
    T[] result = new T[length]; 
    Array.Copy(data, index, result, 0, length); 
    return result; 
} 
+0

Buradaki sipariş, önceliklendirilmesi gereken bir şey olacaktır. Bu, orijinal öğenin seçili öğeyi kaybettiği sonraki koleksiyonla bağlanma olarak seçilmediğinden ve böylece aşağı açılan seçkinin kaldırılmasından dolayı bu tür bir zorlayıcıdır. –