Yur*_*biy 2 c# data-binding wpf xamarin.forms
我为Label创建了一个自定义渲染器.现在我想用它的焦点状态进行操作,所以我创建了可绑定的属性和事件.当我从自定义渲染器更改可绑定属性时,它工作正常:Element.IsFocused = true;
但是当我从视图模型更改它时,它会影响XAML视图,但由于某些原因,不会为此属性调用setter.这是代码:
在自定义类中:
public new static readonly BindableProperty IsFocusedProperty =
BindableProperty.Create(nameof(IsFocused), typeof(bool), typeof(FloatingEntry), false);
public new bool IsFocused
{
get { return (bool)GetValue(IsFocusedProperty); }
set
{
SetValue(IsFocusedProperty, value);
if (value) Focus();
}
}
Run Code Online (Sandbox Code Playgroud)
在XAML中:
IsFocused="{Binding PasswordEntryIsFocused}"
Run Code Online (Sandbox Code Playgroud)
在视图模型中:
private bool _passwordEntryIsFocused;
public bool PasswordEntryIsFocused
{
get { return _passwordEntryIsFocused; }
set
{
SetProperty(ref _passwordEntryIsFocused, value);
}
}
Run Code Online (Sandbox Code Playgroud)
在View Model中的某种方法: PasswordEntryIsFocused = true;
这不是new关键字,我尝试没有它.并且绑定工作,因为我试图将它与可视属性绑定,IsVisible就像它应该工作一样,但是setter总是只从自定义渲染器调用.
我想我可能会在可绑定的属性工作环境中遗漏一些东西.
但是当我从视图模型中更改它时,它会影响XAML视图,但由于某些原因,不会为此属性调用setter.
是的,这是WPF的一个常见错误.XAML生成的代码不会调用setter,而是立即更改绑定的依赖项属性.除非您附加活动,否则您无法参加此PropertyChangedCallback活动.
| 归档时间: |
|
| 查看次数: |
719 次 |
| 最近记录: |