作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试将复选框绑定(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/
我是一名优秀的程序员,十分优秀!