私はいくつかのホテルビジネスアプリケーションに取り組んでいます。新しい予約をデータベースに挿入するための「BookingsWindow」があります。このウィンドウには、ホテルのすべてのゲストのリストを含む 1 つのコンボ ボックスがあります。「BookingsWindow」は親ウィンドウです。新しいゲストを追加するためのボタンが 1 つ含まれています。そのボタンをクリックすると、新しいウィンドウが開きます ("GuestWindow" - 子ウィンドウ)。どちらのウィンドウにも独自のビュー モデル (「BookingsViewModel」と「GuestsViewModel」) があります。親ウィンドウ内のコンボ ボックスのアイテム ソースは、データベース テーブルからの値を持つ監視可能なコレクションであるプロパティ "Guests" にバインドされます。私の質問は、子ウィンドウから新しいゲストを追加した後、コンボボックスアイテムのソースを更新するにはどうすればよいですか?
BookingsWindow.xaml
<ComboBox Height="25" HorizontalAlignment="Left" IsEditable="True" IsTextSearchEnabled="True" ItemsSource="{Binding Path=Guests}" Margin="119,10,0,0" Name="cbGuest" Padding="3,1,1,1" SelectedItem="{Binding Path=Guest}" TextSearch.TextPath="Name" VerticalAlignment="Top" VerticalContentAlignment="Center" Width="141" FontFamily="Times New Roman" FontWeight="Bold" FontSize="14">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock DataContext="{Binding}" Text="{MultiBinding StringFormat='\{0\} ', Bindings={Binding Path=Name}}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<Button BorderBrush="Black" Command="{Binding Path=btnAddGuest}" Content="Novi Gost" FontFamily="Times New Roman" FontWeight="Bold" Height="25" HorizontalAlignment="Left" IsDefault="True" Margin="266,10,0,0" Name="btnNewGuest" VerticalAlignment="Top" Width="62" />
BookingsViewModel.cs
private ObservableCollection<ServiceReference1.tblGuest> guests;
public ObservableCollection<ServiceReference1.tblGuest> Guests
{
get
{
return guests;
}
set
{
guests = value;
OnPropertyChanged("Guests");
}
}
public ICommand _btnAddGuest;
public ICommand btnAddGuest
{
get
{
if (_btnAddGuest == null)
{
_btnAddGuest = new DelegateCommand(delegate()
{
try
{
GuestsViewModel gst = new GuestsViewModel();
Guests guest = new Guests();
guest.ShowDialog();
}
catch
{
Trace.WriteLine("working...", "MyApp");
}
});
}
return _btnAddGuest;
}
ゲスト.xaml
<Button Content="Dodaj" FontFamily="Times New Roman" FontWeight="Bold" Height="36" HorizontalAlignment="Left" Margin="12,402,0,0" Name="btnAddGuest" VerticalAlignment="Top" Width="62" IsDefault="True" Command="{Binding Path= btnAddGuest}" />
btnAddGuestは、新しいゲストをデータベースに追加するためのコマンドです("tblGuests")
ゲストビューモデル
private ServiceReference1.tblGuest guest;
public ServiceReference1.tblGuest Guest
{
get
{
return guest;
}
set
{
guest = value;
OnPropertyChanged("Guest");
}
}
public ICommand _btnAddGuest;
public ICommand btnAddGuest
{
get
{
if (_btnAddGuest == null)
{
_btnAddGuest = new DelegateCommand(delegate()
{
try
{
Service1Client wcf = new Service1Client();
wcf.AddGuest(Guest);
wcf.Close();
}
catch
{
Trace.WriteLine("working...", "MyApp");
}
});
}
return _btnAddGuest;
}
}
wcf.AddGuestは、新しいゲストをデータベースに追加するための WCF サービスのメソッドです...
新しいゲストをデータベースに追加すると、コンボ ボックスのリストにその新しいゲストが表示されません。これを管理する方法は?