Пользовательский элемент управления не может обновить другой элемент управленияC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Пользовательский элемент управления не может обновить другой элемент управления

Сообщение Anonymous »

Чтобы проиллюстрировать проблему, я создал пользовательский элемент управления PingPongView со следующим поведением:
  • при нажатии кнопки Ping затем к сообщению добавляется звездочка *..
  • если нажата кнопка Pong, то последний символ в сообщении будет удалено.

Код: Выделить всё

public partial class PingPongViewModel : ObservableObject
{
[ObservableProperty]
[NotifyCanExecuteChangedFor(nameof(PongCommand))]
string _message = string.Empty;

bool IsMessageNotEmpty => Message != string.Empty;

[RelayCommand]
void Ping() => Message += "*";

[RelayCommand(CanExecute = nameof(IsMessageNotEmpty))]
void Pong() => Message = Message.Substring(0, Message.Length - 1);
}

Код: Выделить всё

public partial class PingPongView : ContentView
{
public static readonly BindableProperty MessageProperty =
BindableProperty.Create(
propertyName: nameof(Message),
returnType: typeof(string),
declaringType: typeof(PingPongView),
defaultBindingMode: BindingMode.TwoWay,
propertyChanged: OnMessagePropertyChanged);

public string Message
{
get => (string)GetValue(MessageProperty);
set => SetValue(MessageProperty, value);
}

static void OnMessagePropertyChanged(BindableObject bindable, object oldValue, object newValue)
{
var view = (PingPongView)bindable;
view._model.Message = (string)newValue;
}

PingPongViewModel _model;
public PingPongView()
{
InitializeComponent();
_model = new PingPongViewModel();
BindingContext = _model;
}
}
Я использовал PingPongView в MainPage следующим образом: К сожалению, в обоих случаях элементы управления Text Entry не отражают изменения в PingPongView. Что я здесь не так?


Подробнее здесь: https://stackoverflow.com/questions/790 ... er-control
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»