- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个共同的任务。一键实现DataGrid中的CheckBox勾选。我决定创建一个从 DataGrid 派生的 DataGridExtended 类,并实现类似的东西:
XAML:
<DataGrid x:Class="DataGrid.DataGridExtended"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
</DataGrid>
public partial class DataGridExtended : System.Windows.Controls.DataGrid
{
private int _oldRowIndex;
private int _oldColumnIndex;
public DataGridExtended()
{
MouseLeftButtonUp += DataGridExtendedMouseLeftButtonUp;
MouseLeftButtonDown += DataGridExtendedMouseLeftButtonDown;
}
private void DataGridExtendedMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
// Если сендер реально DataGridExtended
var dataGridExt = sender as DataGridExtended;
if (dataGridExt == null)
return;
// Получаем текущую ячейку
var currentCell = dataGridExt.CurrentCell;
_oldRowIndex = dataGridExt.SelectedIndex;
_oldColumnIndex = dataGridExt.CurrentColumn.DisplayIndex;
}
private void DataGridExtendedMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
// Если сендер реально DataGridExtended
var dataGridExt = sender as DataGridExtended;
if (dataGridExt == null)
return;
var rowIndex = dataGridExt.SelectedIndex;
var columnIndex = dataGridExt.CurrentColumn.DisplayIndex;
// Получаем текущую ячейку
var currentCell = dataGridExt.CurrentCell;
//if (_oldRowIndex != rowIndex || _oldColumnIndex != columnIndex)
// return;
// Получаем текущую колонку
var currentColumn = currentCell.Column;
// Получаем контент текущей ячейки
var cellContent = currentColumn.GetCellContent(currentCell.Item);
// Если кликнули по чекбоксу
var checkBox = cellContent as CheckBox;
if (checkBox == null)
return;
// Ставием его в фокус
checkBox.Focus();
// Меняем чек на противоположный
checkBox.IsChecked = !checkBox.IsChecked;
// Получаем выражение привязки для чекбокса
var bindingExpression = checkBox.GetBindingExpression(ToggleButton.IsCheckedProperty);
// Если привязка есть - обновляем ее
if (bindingExpression != null)
bindingExpression.UpdateSource();
}
}
最佳答案
在 WPF 中,我们经常会遇到以下情况:特定的 Click
处理程序似乎不起作用。其原因通常是因为控件(或我们自己的代码)正在处理该事件并设置 e.Handled = true;
,这会阻止事件进一步传递。在这些情况下,人们普遍认为您应该在这种情况发生之前尝试访问该事件,因此我们转向匹配/相关 Preview
事件。
在您的情况下,我建议您使用 PreviewMouseLeftButtonDown
事件。你说到那时某些东西还没有初始化,但这对我来说没有任何意义。你说你需要保存以前的值,但你可以通过你的 DataGridExtendedMouseLeftButtonUp
来做到这一点。事件处理程序。
当用户第一次释放鼠标按钮时,您就拥有了他们的新值。将其保存在变量中。当用户在下一次和随后的每次释放鼠标按钮时,将他们从变量中的先前值保存为旧值,然后将他们的新值读入变量中。
关于WPF DataGrid MouseLeftButtonDown 不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18846470/
我有一个派生自 UserControl 类的 WPF 用户控件。 MouseLeftButtonDown 根本不会因为控件而被解雇。我添加了事件处理程序并尝试如下。我想它是在其他地方处理的,如何调试并
我遇到了一个大问题,我已经尽我所能,但我没有找到任何解决方案。我有一个带有 DataTemplate 的列表框。我想使用 MouseLeftButtonDown 和 MouseLeftButtonUp
尝试使用 Slider 时控制我想听MouseLeftButtonDown和 MouseLeftButtonUp .我为这两个事件设置了处理程序。 MouseLeftButtonUp按预期工作。 Mo
我有一个共同的任务。一键实现DataGrid中的CheckBox勾选。我决定创建一个从 DataGrid 派生的 DataGridExtended 类,并实现类似的东西: XAML: 代码: pu
我有以下 XAML 代码: 当我用鼠标左键单击复选框时,不会触发声明的事件。 任何人都可以解释这种行为吗? 提前致谢 最佳答案 该事件
我正在努力解决一个让我发疯的问题。 这是我的 XAML 代码(简化):
我正在尝试以编程方式在 WPF 控件上手动触发 MouseLeftButtonDown 事件,因为我使用的是 Microsoft Surface SDK,它不会触发 MouseLeftButtonDo
我的 XAML 是: 现在我正在关注 MVVM。我需要更改代码以使其与 ViewModel 一起使用。我该如何处理
注意:我已经找到了我的问题的解决方案,所以我将其发布以供引用,尽管我很乐意接受更好的解决方案。 我试图通过连接到 UIElement.MouseLeftButtonDown 来在 Silverligh
您好,我不知道为什么它不起作用。看起来我不能在 InkCanvas 上使用这个事件。 XAML Clear 代码隐藏 private void MC_MouseLeftButt
我在 WPF 应用程序中有一个 TreeView 。如下。 这里是事件的处理程序,存在于代码隐藏文件中
我在一个更大的项目中遇到了这个问题......所以我设置了一个“Testpoject”作为概念证明: 新的 Silverlight 应用程序 添加列表框 用几个复选框填充列表框 注册 listBox1
我在添加到 WPF Canvas 的元素上响应 MouseLeftButtonDown 事件。单击时一切正常(即事件处理程序正确触发),但它对鼠标指针的精度要求太高。你必须完美地站在圆圈的顶端才能让它
我正在尝试了解 MouseLeftButtonDown 的工作原理,但直到现在还没有成功。 当我点击按钮时,没有任何反应。
我构建了一个 WPF 用户控件。此控件具有透明背景。我想捕获 MouseLeftButtonDown 事件,即使此事件发生在透明背景上。如果我将背景更改为“白色”或其他颜色,则事件将按预期进行。 有没
这个问题在这里已经有了答案: What are WPF Preview Events? (4 个答案) 关闭 8 年前。 在学习 WPF 时(我是新手),我创建了一个简单的窗口并放置了一个用于输入用
这是我的代码: public AbilitiesController(Abilities page) { _page = page; page.Scro
如何向 WPF MouseLeftButtonDown 事件处理程序添加特定键盘键的附加条件? 例如Ctrl + 键 private void Grid_MouseLeftButtonDown(obj
当用户单击任何给定的 ListBox 时,我想运行一些代码元素。我的设置是 ListBox带定制ItemsPanelTemplate (Pavan 的 ElementFlow)。基于进入 MouseL
我试过这个 XAML: 还有这个 C#: private void slider_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
我是一名优秀的程序员,十分优秀!