- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Xamarin.Forms,并为 UWP 中的 Checkbox 创建了一个 CustomRenderer。当我通过单击“Alle”按钮将 ListView
中我的项目的所有复选框设置为 true
时,复选框会正确显示,并在框中选中:
但是,如果我将鼠标悬停在复选框上,它们会立即改变外观(复选框消失但仍处于选中状态)。在下面的屏幕截图中,我将光标移到了第 3 个 - 第 7 个复选框上:
这是我在 CustomRenderer 中覆盖的 OnElementChanged
方法:
protected override void OnElementChanged(ElementChangedEventArgs<EvaCheckbox> e)
{
base.OnElementChanged(e);
var model = e.NewElement;
if (model == null)
{
return;
}
nativeCheckbox = new CheckBox();
CheckboxPropertyChanged(model, null);
model.PropertyChanged += OnElementPropertyChanged;
nativeCheckbox.Checked += (object sender, Windows.UI.Xaml.RoutedEventArgs eargs) =>
{
model.IsChecked = (bool)nativeCheckbox.IsChecked;
};
nativeCheckbox.Unchecked += (object sender, Windows.UI.Xaml.RoutedEventArgs eargs) =>
{
model.IsChecked = (bool)nativeCheckbox.IsChecked;
};
SetNativeControl(nativeCheckbox);
}
我试图覆盖 nativeCheckbox
的 PointerEntered
事件。它有效,例如,如果我在此事件上将 model.IsChecked 设置为 true,它将设置为 true:
nativeCheckbox.PointerEntered += (s, args) =>
{
model.IsChecked = true;
};
但我不知道如何(即使在这个地方)防止复选框在将光标移动到复选框上方时更改其外观。像这样将触发事件保留为空代码不会改变所描述的行为:
nativeCheckbox.PointerEntered += (s, args) => { };
当我将光标移到它上面时,如何防止 Checkbox 改变它的外观?
我已经为这个问题创建了一个示例项目。您可以在此处找到存储库:https://github.com/Zure1/CustomCheckbox
它具有完全相同的描述行为。在下面的截图中,我按下了屏幕底部的“全部”按钮,然后复选框看起来是正确的,里面有一个勾:
将鼠标光标移到底部的 3 个复选框上后,它们的外观会发生变化:
信息:我正在我的桌面 (Windows 10) 上调试。不知道WinPhone有没有这个问题。以防万一你想知道为什么我的复选框是红色的:我在 Windows 中的系统颜色是红色的。
最佳答案
这是一个棘手的问题,因为我已经为这个问题苦苦挣扎了一段时间,我会尽力回答这个问题。
TL;DR:这是由 ViewCell 引起的。
问题归结为 Xamarin Forms ListView 和 ViewCell。
我已经好几个月没能找到原因了,解决这个问题的方法是每次发生更改时都刷新 ListView,从而强制重绘整个 ListView,这确实会影响性能。
我对可能原因的有根据的猜测是 ViewCell 的渲染代码缺少某些东西。
至于您的特定问题,我创建了一个 CheckBoxCell,您可以使用它来显示带有标题的复选框列表。 I forked your project and made the changes.
这将显示类似于您要实现的内容并且没有渲染问题,因此将是一个很好的起点。您可以对其进行自定义以显示图像等,但您必须在特定于平台的布局代码中执行此操作。
请注意,我只为 UWP 创建了代码,这应该足以让您转向其他平台。
我希望这能有所帮助。
关于c# - 复选框的 UWP CustomRenderer : Pointer over Checkbox changes style?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41016815/
我创建了一个 Jtable。这个表由两列名称和时间戳组成。如果名称为“jane”,我想将行的颜色设为黄色。以下是该代码:- class CustomRenderer extends Defau
我想根据 JTable 中的值对某些行进行着色。但是我的 customrenderer 被无限次调用,并且整个表格而不是某些行都被着色。 public Component getTableCellRe
我在我的主页的 iOS native 代码中有一个自定义渲染器。当应用程序启动时它工作得很好,并使用我想要的 iOS 系统图标呈现 Navbar 项目。但是,如果我离开主页,当我导航回来时,Right
我的问题是我想更改 jTable 中一列中单元格的单独背景颜色。我想出的代码将颜色更改为一种,并且它适用于所有列。我做错了什么? 这是我的代码 public void fillReserveTable
因此,我在位于 SalesKicker.Droid 中的 CustomSwitchRenderer 类中遇到了这些错误。以下是错误: OnElementCHanged(ElementChangedEv
我有一个 Xamarin Forms 项目,我想在其中有一个按钮,必须按长 才能触发事件。除了长按事件,我还需要按下按钮的确切时间,因为那时我想在 UI 上启动一些动画。 我制作了一个自定义渲染器来解
我正在使用 Xamarin.Forms,并为 UWP 中的 Checkbox 创建了一个 CustomRenderer。当我通过单击“Alle”按钮将 ListView 中我的项目的所有复选框设置为
我正在努力寻找解决方案希望有人能给我指出正确的方向。 我需要导航到 Forms ContentPage,例如: Navigation.PushAsync(new ExamplePage()); 然后从
我刚刚将我的应用程序升级到 Android 7.1(API25) 并更新了 NuGet 包,如下所述: Xamarin.GooglePlayServive.Maps to v42.1021.1 Xam
我尝试在 NavigationBar 上为 Xamarin.Forms android build设置背景图像。那里的例子彼此几乎相同。我使用了这个自定义渲染器; [assembly: ExportR
我是一名优秀的程序员,十分优秀!