クラスのプロジェクトに取り組んでいますが、選択したアイテムをリストボックスに設定するのが困難です。観察可能な品種のコレクションを含む犬のクラスを作成しました。私のメイン画面には、犬を選択できるリスト ボックスがあります。犬が選択され、犬の更新ボタン イベントがトリガーされると、犬の更新画面が開きます。犬の更新画面には、すべての犬種のリスト ボックスがあります。私の質問は、リスト ボックスの選択した項目を犬の品種にリンクするように設定するにはどうすればよいですか?
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();
}
UpdateDogWindow の XAML コードは次のとおりです。
<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>
品種リストのバインドを双方向に設定しようとしましたが、なぜ機能しないのですか?