Tôi đang cố gắng ràng buộc một Hộp kiểm đến một trường nhưng cũng kích hoạt hộp kiểm IsSelected.C# WPF ListBox Checkbox Binding IsChecked vào một lĩnh vực và IsSelected?
Đây là thiết lập ListBox rằng đang làm việc với các ràng buộc dữ liệu
<ListBox x:Name="lstExclude" Grid.Column="2" SelectionMode="Single" >
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Text}"
IsChecked="{Binding Checked ,Mode=TwoWay}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Và đây là đoạn code liên quan đến việc ràng buộc
public MainWindow()
{
InitializeComponent();
List<CheckBoxListItem> items1 = new List<CheckBoxListItem>();
items1.Add(new CheckBoxListItem(true, “home”));
items1.Add(new CheckBoxListItem(false, “work”));
items1.Add(new CheckBoxListItem(true, “cell”));
lstExclude.ItemsSource = items1;
}
public class CheckBoxListItem
{
public bool Checked { get; set; }
public string Text { get; set; }
public CheckBoxListItem(bool ch, string text)
{
Checked = ch;
Text = text;
}
}
này liên kết với hộp kiểm giá trị kiểm tra một cách chính xác, nhưng nếu Tôi nhấp vào hộp kiểm (được chọn hoặc bỏ chọn), tôi muốn chọn mục này, vì vậy tôi đã thử làm theo cách này, vì vậy tôi đã thử làm theo cách này
<ListBox x:Name="lstExclude" Grid.Column="2" SelectionMode="Single" >
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Text}"
IsChecked="{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem}, Path=IsSelected}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Vì vậy, điều này mang lại cho tôi kết quả của việc nhấp vào hộp kiểm (chọn hoặc bỏ chọn) và nó sẽ chọn mục. Vấn đề bây giờ là trường Checked không bị ràng buộc khi tôi thêm các mục.
Làm cách nào để bạn có thể chọn hộp kiểm cả hai được liên kết với trường Đã đánh dấu VÀ vẫn còn công việc IsSelected?
bạn có thể sử dụng tính năng ghép kênh đa năng và MultiValueConverter –