- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有以下 ListView :
<ListView Margin="10" Name="lvUsers" AlternationCount="2" SelectionMode="Extended">
<ListView.View>
<GridView>
<!-- Checkbox header -->
<GridViewColumn>
<GridViewColumn.Header>
<CheckBox Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked"/>
</GridViewColumn.Header>
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding IsChecked}" />
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Header="Age" Width="50" DisplayMemberBinding="{Binding Age}" />
<GridViewColumn Header="Mail" Width="150" DisplayMemberBinding="{Binding Mail}" />
</GridView>
</ListView.View>
<!-- SELECTED ITEM EVENT -->
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListViewItem_MouseLeftButtonDown" />
</Style>
</ListView.ItemContainerStyle>
</ListView>
和事件的代码隐藏:
private void ListViewItem_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
var item = sender as ListViewItem;
if (item != null && item.IsSelected)
{
//Do your stuff
}
}
这是数据模型:
public class User : INotifyPropertyChanged
{
private bool isChecked = false;
private string name = string.Empty;
private int age = 0;
private string mail = string.Empty;
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String propertyName)
{
var handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
public bool IsChecked {
get
{
return this.isChecked;
}
set
{
if (value != this.isChecked)
{
this.isChecked = value;
NotifyPropertyChanged("IsSelected");
}
}
}
public string Name
{
get
{
return this.name;
}
set
{
if (value != this.name)
{
this.name = value;
NotifyPropertyChanged("Name");
}
}
}
public int Age {
get
{
return this.age;
}
set
{
if (value != this.age)
{
this.age = value;
NotifyPropertyChanged("Age");
}
}
}
public string Mail {
get
{
return this.mail;
}
set
{
if (value != this.mail)
{
this.mail = value;
NotifyPropertyChanged("Mail");
}
}
}
}
我在 ListView 标题处有一个复选框,每个 ListView 项目都有一个复选框。
我正在尝试检测何时选择了 listviewitem,然后一旦选择,我想将其标记为已选中。 Listviewitem 事件 PreviewMouseLeftButtonDown 不起作用,当触发 item.IsSelected 时为 false,因为它是在按下鼠标左键之前的预览。没有 MouseClick 事件,只有 MouseDoubleClick。
此外,单击 listviewitem 后,我想将选中的项目标记为已选中(已选中复选框)。
我该怎么做?
最佳答案
在 ListViewItem 样式中绑定(bind) IsSelected
属性:
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="IsSelected" Value="{Binding IsChecked}"/>
</Style>
</ListView.ItemContainerStyle>
请注意,为避免属性名称出现打印错误,您可以使用 CallerMemberName
属性,这会使编译器生成正确的属性名称:
using System.Runtime.CompilerServices;
...
private void NotifyPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public bool IsChecked
{
get { return isChecked; }
set
{
isChecked = value;
NotifyPropertyChanged();
}
}
关于c# - WPF ListView : Detect when listviewitem is selected and then check it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44638745/
我有一个 ListView ,其中包含几个动态创建的项目,每个项目都有两个子项目,它们是数量和代码,在查询数据库后应更新数量,但为了使代码更具可读性,我想通过访问子项目键而不是它的索引,比如: 子项目
我的 ListViewItems 中有删除按钮。从这些按钮的点击事件中,我想在通过数据库中的 ID 删除项目之前显示一个确认对话框。 ID 存储在项目的 ViewHolder 中。 如何从 Alert
我有一个 ListView,其中 ListView 项目有按钮和文本 block .... 塞纳里奥: 我可以在不选择 ListView 项目的情况下单击按钮,即选择最后一个项目,然后如果我尝试单击第
寻求帮助。 是否有机会通过ViewModel {Binding}更改Listviewitem的ContentBorder:BorderBrush? Something like this 最佳答案 更
我需要覆盖 ListViewItem 的预定义样式以使选择不可见。如果我将整个样式复制到我的资源中并进行编辑,我知道该怎么做。但我不敢相信没有比复制整个样式更轻松的方法了。所以我发现默认的 ListV
下面是一些构建 ListView 的代码示例。这是我第一次尝试更改 ListView 中项目的颜色和字体。下面的代码可以毫无问题地填充 ListView,但它不使用字体。有人可以告诉我我在这里做错了什
我正在开发一个通用 Windows 应用程序,其中有一个带有 DataTemplate 的 ListView。我想让 ListView 可扩展,当我单击(选择)一个项目时,所选项目的高度会随着动画而增
我有一些来自集合的 ListViewItem,我创建了一个 DataTemplate,这样每个 ListViewItem 都有一个 Button 作为子控件:
对于哪些操作,我应该使用 Checkbox 与 ListViewItem 的 SelectedItem?我不禁认为这只是个人喜好,但话又说回来,我仍然不知道。 最佳答案 如果您选择其他项目,已选中的项
我正在使用 C# 创建 Windows 窗体应用程序。该窗体包含一个 ListView。这是红十字会调度员的应用程序。 ListView 有一个所有单元的列表。每个单元都有一个状态。此状态需要更改。因
有一段时间我被这个小问题难住了。 W10 下的 ListView 有一些我无法理解的奇怪行为。考虑一个简单的列表:
我有一个按钮作为每个 ListViewItem 的最后一列。按下按钮时,我需要在单击事件中找到按钮(发件人)父 ListView 项。 我试过: ListViewItem itemToCancel =
在我当前使用 Javascript 中的 gridlayout 实现的 listview 中,如果我右键单击某个项目,则会显示一个显示“复制”的上下文菜单。我想覆盖此上下文菜单事件以选择元素而不是显示
当我向用户显示我的自定义 listviewitem 时,每个项目中包含的所有项目和对象都具有我想要的颜色, 但是当滚动和选择(使用 onListItemClick )时,项目不会更改所需颜色的背景颜色
关于构造的快速简单的问题。 我有以下用于将项目添加到 ListView 的代码。 ListViewItem item = new ListViewItem(); item.Text = file; i
我有一个包含三列的 ListView,我想为每一列添加字符串 这是代码 ListViewItem tempLV = new ListViewItem("first"); tempLV.SubItems
我正在尝试在自定义 ListView 中实现搜索功能因此我隐藏了Items自定义 ObservableCollection这允许 AddRange ,类似于 one defined on damonp
我正在使用 Compact Framework 开发一个智能设备项目。 我有一个 ListView,其中包含多个可检查的 ListViewItem:属性 CheckBoxes 为真。我一次只需要检查一
我有一个 ListView (WinForms),我想通过单击按钮在其中上下移动项目。要移动的项目是已检查的项目。因此,如果选择项目 2、6 和 9,当我按下向上移动按钮时,它们将变为 1、5 和 8
我有一个 ListView,对于 View = List,我想让列表项填满控件的整个宽度。也就是说,当您单击一个项目时,整行都会突出显示。 我在 ListView 或 ListViewItem 中找不
我是一名优秀的程序员,十分优秀!