目標アイテムがCombobox
のいずれかで選択されると、複数Combobox
を有することである、それを除去または選択のための他のCombobox
ESから隠してなければなりません。複数のコンボボックスは異なるべきである - WPF
Combobox
のいずれかで選択が変更されたときはいつでも、ソースを変更することができます。しかし問題は、選択したアイテムをItemsSource
から削除すると、選択したアイテムを含むすべてのソースからアイテムが削除されました。ここで
は私が各Combobox
に対して複数のコレクションを持つことができます知っているが、場合には、大量のメモリをとることができ、サンプル
XAML
<StackPanel>
<ComboBox Width="100" Height="50" SelectedItem="{Binding SelectedItem}" ItemsSource="{Binding ComboboxItems}" />
<ComboBox Width="100" Height="50" SelectedItem="{Binding SelectedItem}" ItemsSource="{Binding ComboboxItems}" />
<ComboBox Width="100" Height="50" SelectedItem="{Binding SelectedItem}" ItemsSource="{Binding ComboboxItems}" />
<ComboBox Width="100" Height="50" SelectedItem="{Binding SelectedItem}" ItemsSource="{Binding ComboboxItems}" />
</StackPanel>
分離コード
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
ObservableCollection<string> s = new ObservableCollection<string>();
s.Add("item1");
s.Add("item2");
s.Add("item3");
s.Add("item4");
s.Add("item5");
s.Add("item6");
DataContext = new MainViewModel() { ComboboxItems = s , SelectedItem = "item2" };
}
}
public class MainViewModel : INotifyPropertyChanged
{
private ObservableCollection<string> comboboxitems;
public ObservableCollection<string> ComboboxItems
{
get { return comboboxitems; }
set { comboboxitems = value; OnPropertyChanged("ComboboxItem"); }
}
private string _selectedItem;
public string SelectedItem
{
get { return _selectedItem; }
set
{
_selectedItem = value;
comboboxitems.Remove(value); //here removing selected item from itemssource
OnPropertyChanged("SelectedItem");
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propname)
{
if(PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propname));
}
}
ですCombobox
の数が増加します。
希望すると、これをWPFで簡単に実現できるはずです。
。たとえばSelectedItem1、SelectedItem2などがありますが、ItemsSourceは共有できます。 – adminSoftDK
CollectionViewまたはCollectionViewSourceを使用します。これは、実際のソースのプロキシです。これにより、Viewプロパティを介して共通のソースを共有することができ、各CollectionViewに対して異なる選択項目(CurrentItem)を持つことができます。 – codeSetter
@adminSoftDKはい、できますが、他の 'Combobox'の項目から項目を削除したり、選択を制限するにはどうしたらいいですか? – Gopichandar