我想將控件數據源設置爲可觀察的鍵值對集合,但僅顯示對的關鍵部分。正確設置WPF控件中的綁定
我有第三方多選組合框。
我修改了附帶的數據源類,以便它包含關鍵值對集合。
這裏是類:
public class DataSource : INotifyPropertyChanged
{
private ObservableCollection<KeyValuePair<string,string>> _items;
public DataSource(ObservableCollection<KeyValuePair<string, string>> items)
{
_items = items;
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
public ObservableCollection<KeyValuePair<string, string>> Items
{
get { return _items; }
}
private string _selectedItem = "";
public string SelectedItem
{
get { return _selectedItem; }
set
{
_selectedItem = value;
OnPropertyChanged("SelectedItem");
}
}
private ObservableCollection<KeyValuePair<string, string>> _selectedItems;
public ObservableCollection<KeyValuePair<string, string>> SelectedItems
{
get
{
if (_selectedItems == null)
{
_selectedItems = new ObservableCollection<KeyValuePair<string, string>> { new KeyValuePair<string,string>("ALL"," ") };
SelectedItemsText = WriteSelectedItemsString(_selectedItems);
_selectedItems.CollectionChanged +=
(s, e) =>
{
SelectedItemsText = WriteSelectedItemsString(_selectedItems);
OnPropertyChanged("SelectedItems");
};
}
return _selectedItems;
}
set
{
_selectedItems = value;
}
}
public string SelectedItemsText
{
get { return _selectedItemsText; }
set
{
_selectedItemsText = value;
OnPropertyChanged("SelectedItemsText");
}
} string _selectedItemsText;
private static string WriteSelectedItemsString(IList<KeyValuePair<string, string>> list)
{
if (list.Count == 0)
return String.Empty;
StringBuilder builder = new StringBuilder(list[0].Key);
for (int i = 1; i < list.Count; i++)
{
builder.Append(", ");
builder.Append(list[i].
);
}
return builder.ToString();
}
}
在後面的代碼我有:
DataSource ds = new DataSource(materialNames);
cmbLastEditors.DataContext = ds;
而在我的XAML中我有:
<my1:MultiComboBox Name="cmbLastEditors" Grid.Row="8" Grid.Column="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" SelectionMode="Multiple" DisplaySeparator=", " ItemsSource="{Binding Items}" SelectedItems="{Binding SelectedItems}" />
我想要做這樣的事情
ItemsSource="{Binding Items.Key}"
任何人都可以幫助我嗎?如果您需要更多信息,請告訴我。
輝煌。非常感謝:D添加DisplayMemberPath =「鑰匙」工作。 – user589195 2012-02-15 16:55:59