Заполнить ObservableCollection в зависимости от выбранного значения в ComboBox wpf mvvm
У меня есть Combobox который заполняется из коллекции
<ComboBox DisplayMemberPath="Name"
ItemsSource="{Binding clients, IsAsync=True}"
SelectedItem="{Binding Selected, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
Style="{StaticResource ComboBoxStyle}"
ItemContainerStyle="{StaticResource ComboBoxItemStyle}"
x:Name="Client"/>
И есть другая коллекция, которая должна заполняться в зависимости от выбранного значения в ComboBox. Пробую заполнять так:
protected Client mSelected;
public Client Selected
{
get => mSelected;
set
{
if (mSelected == null)
return;
mSelected = value;
if (Selected != null)
{
Search();
}
}
}
public List<GroupModel> groupModels { get; set; }
public ObservableCollection<Client> clients { get; set; }
public void Search()
{
FilteredItems = new List<GroupModel>(Filter(Selected.Name));
}
public IEnumerable<GroupModel> Filter(string path)
{
for (int i = 0; i < clients.Count; i++)
{
if (clients[i].Name == path)
{
groupModels = new List<GroupModel>(GetInfo(Path.GetDirectoryName(clients[i].paths[i].DefaultFolder)));
}
}
return groupModels;
}
public IEnumerable<GroupModel> GetInfo(string path)
{
groupModels = new List<GroupModel>();
foreach (var item in Directory.GetDirectories(path))
{
GroupModel group = new GroupModel()
{
Name = new FileInfo(item).Name.Substring(new FileInfo(item).Name.Length - 4),
items = new List<DecreeModel>(GetDecree(item)),
IsChecked = false
};
CountReg++;
groupModels.Add(group);
}
return groupModels;
}
Подскажите, что я делаю не так.
public class BaseViewModel : INotifyPropertyChanged
{
// Событие, которое вызывается, когда какое-либо дочернее свойство меняет свое значение.
public event PropertyChangedEventHandler PropertyChanged = (sender, e) => { };
// Необходимо, чтобы вызвать событие <see cref = "PropertyChanged" />
public void OnPropertyChanget( string name)
{
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
Подправил Selected
protected Client mSelected;
public Client Selected
{
get => mSelected;
set
{
mSelected = value;
if (mSelected != null)
{
Search();
}
OnPropertyChanget(nameof(Selected));
}
}