Обновить список в другом списке с помощью MVVM - PullRequest
0 голосов
/ 09 июля 2020

У меня есть свойство списка под названием Fruits с некоторыми элементами внутри. Весь список привязан к Combobox, который отображает его. Я также создаю поле и свойство CurrentFruit для получения и установки SelectedItem и привязываю его к текстовому полю, чтобы увидеть обновление. Теперь я пытаюсь сделать что-то подобное для свойства UpdatedFruits, единственное, что отличается, - это то, что этот список зависит от SelectedItem из списка Fruits. То есть, когда я выбираю элемент из Combobox1, например, «Orange», а затем открываю Combobox2, в нем должна отображаться только строка «Apple». Я попытался удалить его непосредственно в получателе списка UpdatedFruits, но он снова отображает только весь список. Это может быть потому, что в конструкторе я присваиваю значение UpdatedFruits, равное Fruits.

xaml.cs

public class NewLUT_ViewModel : INotifyPropertyChanged
{
    public ObservableCollection<string> Fruits { get; } = new ObservableCollection<string>()
    {
        "Orange",
        "Apple",
        "Banana"
    };

    public NewLUT_ViewModel()
    {
        UpdatedFruits = Fruits;
    }

    private string currentFruit;
    public string CurrentFruit
    {
        get
        {
            return currentFruit;
        }
        set
        {
            currentFruit = value;
            OnPropertyChanged();
        }
    }

    private ObservableCollection<string> updatedFruits;
    public ObservableCollection<string> UpdatedFruits
    {
        get
        {
            return updatedFruits;
        }
        set
        {
            Fruits.Remove(CurrentFruit);
            updatedFruits = value;
            OnPropertyChanged();
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged([CallerMemberName] string name = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
    }
}

xaml

<ComboBox ItemsSource="{Binding Fruits}" SelectedItem="{Binding CurrentFruit}"/>
<ComboBox ItemsSource="{Binding UpdatedFruits}"/>
<TextBox Text="{Binding CurrentFruit}"></TextBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...