Avalonia 11 – как передать данные из View в ViewModel (необходимо обрабатывать фокус в текстовом поле)C#

Место общения программистов C#
Anonymous
Avalonia 11 – как передать данные из View в ViewModel (необходимо обрабатывать фокус в текстовом поле)

Сообщение Anonymous »

Я разрабатываю приложение для сенсорной панели.
Я столкнулся с проблемой при передаче данных GotFocus в мою ViewModel. Моя кнопка должна знать, какое текстовое поле выбрано в данный момент — она изменит заданную строку в ViewModel в зависимости от фокуса. Я использую набор инструментов MVVM сообщества.
Вот мой пользовательский элемент управления:

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










 Enter your phone number


 Enter your pick up code





Add Letter A





UserControl.axaml.cs

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

using Avalonia;
using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using System;
using System.Diagnostics;
using TouchPanel.ViewModels;
namespace TouchPanel.Views;

public partial class PickUpParcelView : UserControl
{
bool gotFocus = false;
public TextBox selectedTextBox; // i want to pass this to my viewmodel to modify
public PickUpParcelView()
{
InitializeComponent();
}
public void TextBox_GotFocus(object source, GotFocusEventArgs args)
{
Debug.WriteLine("Got Focus");
selectedTextBox = (TextBox)source;
gotFocus = true;
}
public void TextBox_LostFocus(object source, RoutedEventArgs args)
{
Debug.WriteLine("LostFocus");
gotFocus = false;
}
}
Модель представления

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

using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Interactivity;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TouchPanel.ViewModels
{
public partial class PickUpParcelViewModel : ViewModelBase
{
[ObservableProperty]
public string? _pickUpCode = string.Empty;

[ObservableProperty]
public string? _phoneNumber = string.Empty;

[RelayCommand]
public void AddLetterA()
{
PickUpCode += "A";
}
}
}

Я пытался найти его в течение часа, но безуспешно, я не смог найти подходящего решения моей проблемы.
Похоже, что учебные пособия и примеры не имеют хорошего решение тоже.

Подробнее здесь: https://stackoverflow.com/questions/784 ... focus-on-t

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