C# 可绑定属性的Setter从不激发
我为标签创建了自定义渲染器。现在我想操纵它的焦点状态,所以我创建了bindable属性和事件。当我从自定义渲染器更改bindable属性时,它工作得很好,如下所示:C# 可绑定属性的Setter从不激发,c#,wpf,data-binding,xamarin.forms,C#,Wpf,Data Binding,Xamarin.forms,我为标签创建了自定义渲染器。现在我想操纵它的焦点状态,所以我创建了bindable属性和事件。当我从自定义渲染器更改bindable属性时,它工作得很好,如下所示:Element.IsFocused=true 但是,当我从视图模型更改它时,它会影响XAML视图,但由于某些原因,它不会为此属性调用setter。代码如下: 在自定义类中: public new static readonly BindableProperty IsFocusedProperty = Binda
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();
}
}
在XAML中:
IsFocused="{Binding PasswordEntryIsFocused}"
在视图模型中:
private bool _passwordEntryIsFocused;
public bool PasswordEntryIsFocused
{
get { return _passwordEntryIsFocused; }
set
{
SetProperty(ref _passwordEntryIsFocused, value);
}
}
在某些方法的视图模型中:PasswordEntryIsFocused=true代码>
它不是关于new
关键字的,我试着不用它。
绑定工作正常,因为我尝试用一个可视属性绑定它,比如IsVisible
,它工作正常,但setter总是只能从自定义渲染器调用
我想我可能会错过一些关于可绑定财产工作的内容
但是,当我从视图模型更改它时,它会影响XAML视图,但由于某些原因,它不会为此属性调用setter
是的,这是WPF的一个常见错误。XAML生成的代码不调用setter,而是立即更改绑定依赖项属性。除非附加PropertyChangedCallback
事件,否则无法中断此事件。以下是正确使用此事件的示例: