Я работаю над классным проектом, и у меня возникают трудности с настройкой выбранных элементов в списке. Я создал класс собак, содержащий наблюдаемую коллекцию пород. На главном экране у меня есть список, из которого вы можете выбрать собаку. Экран обновления собаки открывается, когда собака выбрана и запускается событие кнопки обновления собаки. На экране обновления собак есть список со всеми породами собак. Мой вопрос: как мне установить выбранные элементы списка для связи с породами собак?
Вот код события btnUpdateDog_Click:
private void btnUpdateDog_Click(object sender, RoutedEventArgs e)
{
if (this.lstDogListBox.SelectedItem != null)
{
Dog selectedDog = (Dog)this.lstDogListBox.SelectedItem;
var dogId = selectedDog.DogId;
var _selectedDog = _dogRepository.Fetch(dogId).SingleOrDefault();
UpdateDogWindow updateDogWindow = new UpdateDogWindow(dogId);
updateDogWindow.Owner = windowClientApplication;
updateDogWindow.DataContext = _selectedDog;
updateDogWindow.ShowDialog();
if (updateDogWindow.ShowDialog() == true)
{
LoadSearchResults();
}
}
}
Вот конструктор для UpdateDogWindow
public UpdateDogWindow(int criteria)
{
_dogRepository = new DogRespository();
var _dogQuery = _dogRepository.Fetch(criteria);
this.DataContext = _dogQuery;
InitializeComponent();
}
Вот код XAML для UpdateDogWindow:
<Window x:Class="ClientApplication.UpdateDogWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Objects="clr-namespace:SGVHS_VCDB.Database.Objects;assembly=SGVHS_VCDB.Database.Objects"
Title="Update Dog"
Height="300"
Width="800"
Background="#FFD6DBDD"
WindowStartupLocation="CenterOwner"
WindowStyle="ToolWindow"
Loaded="Window_Loaded">
<Window.DataContext>
<Objects:Dog />
</Window.DataContext>
<Canvas>
<Label
Canvas.Left="20"
Canvas.Top="20"
Content="_Dog Name:"
Height="36"
FontSize="18"
Name="lblDogName" />
<TextBox
Canvas.Left="130"
Canvas.Top="20"
Height="38"
Width="250"
FontSize="18"
Text="{Binding Path=DogName, UpdateSourceTrigger=PropertyChanged}"
Name="txtUpdateDogName" />
<Label
Canvas.Left="20"
Canvas.Top="80"
Content="_Intake Date:"
Height="36"
FontSize="18"
Name="lblIntakeDate" />
<DatePicker
Canvas.Left="170"
Canvas.Top="81"
Height="38"
Width="175"
FontSize="18"
SelectedDate="{Binding IntakeDate}"
Name="dtoUpdateIntakeDate"/>
<Label
Canvas.Left="20"
Canvas.Top="140"
Height="36"
Content="_Unavailable Date:"
FontSize="18"
Name="lblUnavailableDate"/>
<DatePicker
Canvas.Left="170"
Canvas.Top="141"
Height="38"
Width="175"
FontSize="18"
SelectedDate="{Binding UnavailableDate}"
Name="dtoUnavailableDate"/>
<GroupBox
Canvas.Left="400"
Canvas.Top="22"
Header="Breeds"
Height="169"
Width="363"
FontSize="18"
BorderBrush="Black"
Name="grpBreeds">
<ListBox
DisplayMemberPath="BreedName"
SelectionMode="Multiple"
SelectedValuePath="BreedName"
SelectedItem="{Binding Breed, Mode=TwoWay}"
Name="lstUpdateDogBreedList" />
</GroupBox>
<CheckBox
Canvas.Left="20"
Canvas.Top="200"
Content="Adopted"
Height="32"
FontSize="18"
IsChecked="{Binding Adopted}"
Name="chkAdopted"/>
<Button
Canvas.Left="637"
Canvas.Top="205"
Content="Done"
Height="30"
Width="120"
FontSize="18"
Name="btnUpdateDogDone" />
</Canvas>
</Window>
Я пытался установить двустороннюю привязку списка пород, почему это не работает?