いつもお世話になってます。
山田です。
Listbox内でCheckboxを利用しております。
Listboxが、Selectedされたときは、Checkboxにチェックを入れて、
Checkboxにチェックされたときは、Selected された状態(選択された状態)にしたいと思っております。
ListBoxが、Selected されたときは、Binding 時に、Checkbox に対してtrueを入れて、PropertyChangedで
通知してあげれば、できるのですが、逆に、Checkboxにチェックが入ったときに、ListboxがSelectedされた方法がわからなく、
御知恵を頂きたいと思いまして、投稿させていただきました。
お手数をおかけしますが、どのような方法があるかご教授いただけないでしょうか?
宜しくお願い致します。
下記は、Listbox Selected されたときに Checkbox をチェックするコードです。
xaml
<ListBox Grid.Row="1" Margin="72,12,50,9" SelectedItem="{Binding Path=SelectedRoomObject,Mode=TwoWay}" ItemsSource="{Binding RoomObjects}" >
<ListBox.ItemTemplate>
<DataTemplate>
<WrapPanel>
<CheckBox IsChecked="{Binding IsUsed}" />
<TextBlock Text="{Binding RoomName}" />
</WrapPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
ViewModel.cs
private RoomDto selectedRoomObject;
public RoomDto SelectedRoomObject
{
get { return selectedRoomObject; }
set
{
selectedRoomObject = value;
foreach (RoomDto roomDto in roomObjects)
{
if (selectedRoomObject.RoomId == roomDto.RoomId)
{
roomDto.IsUsed = true;
break;
}
}
OnPropertyChanged("SelectedRoomObject");
}
}
Model.cs
public class RoomDto : ViewModelBase
{
public int? RoomId { get; set; }
public string RoomName { get; set; }
private bool used;
public bool IsUsed
{
get
{ return used; }
set
{
used = value;
OnPropertyChanged("IsUsed");
}
}
}