Если вы действительно хотите связать с методом, вы можете использовать ObjectDataProvider
: Документы Microsoft: Как: Привязать к методу .
У вас есть много вариантов. Вы можете использовать событие ListBox.SelectionChanged
для запуска запроса к базе данных.
Я настоятельно рекомендую не смешивать привязку данных XAML и прямое назначение свойств с помощью C#. При возможности следует использовать привязку данных.
Я создал несколько DependencyProperty
свойств источника данных для свойств ListBox.ItemsSource
, к которым необходимо привязаться. Поскольку вы не предоставили никаких сведений о типе элемента данных, я связал ListBox
с коллекцией вымышленного типа DataItem
:
MainWindow.xaml.cs
partial class MainWindow : Window
{
public static readonly DependencyProperty DataItemsProperty = DependencyProperty.Register(
"DataItems",
typeof(IEnumerable),
typeof(MainWindow),
new PropertyMetadata(default(IEnumerable)));
public IEnumerable DataItems
{
get => (IEnumerable) GetValue(MainWindow.DataItemsProperty);
set => SetValue(MainWindow.DataItemsProperty, value);
}
public static readonly DependencyProperty TasksProperty = DependencyProperty.Register(
"Tasks",
typeof(IEnumerable),
typeof(MainWindow),
new PropertyMetadata(default(IEnumerable)));
public IEnumerable Tasks
{
get => (IEnumerable) GetValue(MainWindow.TasksProperty);
set => SetValue(MainWindow.TasksProperty, value);
}
public MainWindow()
{
this.DataItems = db.ag_arbeitsgemeinschaft.ToList();
}
private void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
// Cast the ListBox.SelectedItem from object to the data type
DataItem selectedItem = e.AddedItems.OfType<DataItem>().FirstOrDefault();
if (selectedItem == null)
{
return;
}
// Access the selected item's members
string displayedValue = selectedItem.ag_name;
// Execute query
var erg = from a in db.an_anliegen
where a.an_ag == displayedValue && !a.an_fertig
select a;
// Update binding source of the ListBox named 'liAn'
this.Tasks = erg.ToList();
}
}
MainWindow.xaml
<Window>
<ListBox x:Name="liAg"
ItemsSource="{Binding RelativeSource={RelativeSource AncestorType=MainWindow},
Path=DataItems}"
DisplayMemberPath="ag_name"
SelectionChanged="OnSelectionChanged" />
<ListBox x:Name="liAn"
ItemsSource="{Binding RelativeSource={RelativeSource AncestorType=MainWindow},
Path=Tasks}"
DisplayMemberPath="an_titel" />
</Window>