gpt4 book ai didi

C# WPF ListBox 复选框绑定(bind) IsChecked 到字段并 IsSelected?

转载 作者:可可西里 更新时间:2023-11-01 08:58:09 25 4
gpt4 key购买 nike

我正在尝试将复选框绑定(bind)到字段,但也会触发复选框的 IsSelected。

这是使用数据绑定(bind)的 ListBox 设置

<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>

这里是与绑定(bind)关联的代码

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;
}
}

这会正确绑定(bind)复选框选中的值,但是如果我单击复选框(选中或未选中),我希望它选择该项目,所以我尝试这样做

<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>

所以这给了我单击复选框(选中或取消选中)的结果,它将选中该项目。现在的问题是,当我添加项目时,Checked 字段未绑定(bind)。

如何让复选框既绑定(bind)到 Checked 字段又让 IsSelected 起作用?

最佳答案

将两个 UI 属性绑定(bind)到 Checked 对象模型属性是否可行?

<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="IsSelected" Value="{Binding Checked, Mode=OneWay}"/>
</Style>
</ListBox.ItemContainerStyle>

<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Text}" IsChecked="{Binding Checked}"/>
</DataTemplate>
</ListBox.ItemTemplate>

关于C# WPF ListBox 复选框绑定(bind) IsChecked 到字段并 IsSelected?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23295857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com