Использование IValueConverter
- один из способов достижения этого.
Вы не отображали классы данных. Затем я предполагаю его имена с помощью примера c.
1) Создайте класс Converter в требуемом пространстве имен.
public class TownsConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
List<Town> result = new List<Town>; // use your type of List or ObservableCollection
if (value is List<Town> towns)
{
foreach (Town town in towns)
{
if (...) // your condition here
{
result.Add(town);
}
}
}
return result;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => null;
}
2) Затем добавьте конвертер в Window.Resources
<Window.Resources>
<local:TownsConverter x:Key="TownsConverter"/>
</Window.Resources>
3) Затем прикрепите его к Binding
<ComboBox ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.AllTowns, Converter={StaticResource TownsConverter}"/>