Свойство не обновляет представление при изменении с другой виртуальной машиныC#

Место общения программистов C#
Ответить
Anonymous
 Свойство не обновляет представление при изменении с другой виртуальной машины

Сообщение Anonymous »

Я использую Avalonia с CommunityToolkit MVVM. Когда я меняю свойство (целое число) в исходной виртуальной машине, где оно определено, оно обновляет представление. Когда я меняю свойство с детского класса, оно обновляет свойство, но не представление. /> mainwindow.axaml

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





// ... Code ...















// ...  Code ...


managerwindow.axaml mainwindowviewmodel.cs

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

public partial class MainWindowViewModel : ViewModelBase {

private int _currentTabIndex = 0;
public int CurrentTabIndex
{
get => _currentTabIndex;
set
{
CurrentTabHeader = TabIndexToString(value);
SetProperty(ref _currentTabIndex, value);
}
}

private string TabIndexToString(int index)
{
return index switch
{
0 => "Home",
1 => "Manager",
2 => "Settings",
3 => "Add Package",
_ => throw new ArgumentOutOfRangeException(nameof(index), "Invalid tab index")
};
}
}
managerwindowviewmodel.cs

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

public partial class ManagerWindowViewModel : MainWindowViewModel
{
public void OpenNewPackageWindow()
{
// Logic to open a new package window
Console.WriteLine("Opening new package window...");
CurrentTabIndex = 3;
}
}
App.axaml.cs

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

public partial class App : Application {

public override void OnFrameworkInitializationCompleted()
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
// Avoid duplicate validations from both Avalonia and the CommunityToolkit.
// More info: https://docs.avaloniaui.net/docs/guides/development-guides/data-validation#manage-validationplugins
DisableAvaloniaDataAnnotationValidation();
desktop.MainWindow = new MainWindow
{
DataContext = new MainWindowViewModel(),
};
}

base.OnFrameworkInitializationCompleted();
}
}
managerwindow.axaml.cs

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

public partial class ManagerWindow : UserControl
{
public ManagerWindow()
{
InitializeComponent();
DataContext = new ManagerWindowViewModel();
}
}
Я ожидал, что свойство автоматически обновляет представление при вызове из любого места, а не только исходный класс.

Подробнее здесь: https://stackoverflow.com/questions/796 ... another-vm
Ответить

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

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

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

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

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