ラベル用のカスタムレンダラーを作成しました。今はフォーカス状態で操作したいので、バインド可能なプロパティとイベントを作成しました。 Element.IsFocused = true;
ビューモデルから変更すると、XAMLビューに影響しますが、何らかの理由でこのプロパティのセッターが呼び出されません。ここでは、コードは次のようになります。バインド可能なプロパティのセッターは一切発生しません
カスタムクラスでは:
XAMLで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();
}
}
:
ビューモデルでIsFocused="{Binding PasswordEntryIsFocused}"
:
private bool _passwordEntryIsFocused;
public bool PasswordEntryIsFocused
{
get { return _passwordEntryIsFocused; }
set
{
SetProperty(ref _passwordEntryIsFocused, value);
}
}
ビューモデルでは、いくつかの方法で:PasswordEntryIsFocused = true;
それはnew
というキーワードではなく、私はそれを試してみました。 バインディングは、IsVisible
のような視覚的なプロパティでバインドしようとしていたため、正しく動作していましたが、setterは常にカスタムレンダラーからのみ呼び出されます。
私はバインディング可能なプロパティの仕事の文脈で何かを見逃すかもしれないと思う。
適切な作業の例を次に示します。 https://forums.xamarin.com/discussion/19320/customcontrol –