Как предоставить свойство Command-Property для пользовательского элемента управления в MVVM (.NET MAUI)C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как предоставить свойство Command-Property для пользовательского элемента управления в MVVM (.NET MAUI)

Сообщение Anonymous »

Я пытаюсь создать собственный элемент управления в .NET MAUI, который должен предоставить BindableProperty ICommand для своего родительского элемента. Вот базовый пример того, чего я пытаюсь достичь.
Просмотр MainPage (MainPage.xaml) Класс представления MainPage (MainPage.xaml.cs)

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

public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
BindingContext = new MainPageViewModel();
}
}
Модель представления MainPage (MainPageViewModel.cs)

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

public class MainPageViewModel : ObservableObject
{
public ICommand ProcessNewScoreCommand { get; }

public MainPageViewModel()
{
ProcessNewScoreCommand = new Command(DoSomething);
}

private void DoSomething()
{
// Do something
}
}
Класс представления MyCustomControl (MyCustomControl.xaml.cs)

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

public partial class MyCustomControl : ContentView
{
public static readonly BindableProperty DoSomethingProperty =
BindableProperty.Create(nameof(DoSomething), typeof(ICommand), typeof(MyCustomControl));

public ICommand DoSomething
{
get => (ICommand)GetValue(DoSomethingProperty);
set => SetValue(DoSomethingProperty, value);
}

public MyCustomControl()
{
InitializeComponent();
BindingContext = new MyCustomControlViewModel(DoSomething);
}
}
Модель представления MyCustomControl (MyCustomControl ViewModel.cs)

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

public class MyCustomControlViewModel : ObservableObject
{
public ICommand DoSomething { get; }

public MyCustomControlViewModel(ICommand doSomethingCommand)
{
DoSomething = doSomethingCommand;
}

private void PerformSomeLogic()
{
// Any calulations/logic
// ...

if (DoSomething.CanExecute(null))
{
// Execute command, so that parent component gets informed and can act.
DoSomething.Execute(null);
}
}
}
Во время отладки свойство DoSomething класса MyCustomControl.xaml.cs всегда имеет значение null. Также кажется, что его установщик никогда не вызывается. Что я делаю не так?

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Обнаружить Command+R и Command+H в Safari
    Anonymous » » в форуме Javascript
    0 Ответы
    45 Просмотры
    Последнее сообщение Anonymous
  • SED -E Expression char 42 Unrimelined Command `S 'Command [закрыто]
    Anonymous » » в форуме Linux
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Java - Arding Command Command Arguments с пробелами и двойными циклами не сбои
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Является ли .net Maui Communitytoolkit.mvvm icommand плохая практика в ViewModel в .net maui? [закрыто]
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • .Net MAUI Styles.xaml не обнаруживает свойства пользовательского элемента управления в Visual Studio
    Anonymous » » в форуме C#
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous

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