Используйте связанное значение CheckBox также за пределами DataContext C# WPF - PullRequest
0 голосов
/ 21 июня 2020

Я хочу использовать статус флажка в другом классе. К сожалению, это не совсем работает.

Вот мой пример кода: Обратите внимание: все привязки, OnPropertyChanged и RelayCommand с Icommand были реализованы правильно и работают. Но не здесь, чтобы было легче читать.

MainWindow XAML:

<CheckBox Content="Select or not" IsChecked="{Binding IsSelected}"/>

<Button Content="Test" Command="{Binding ButtonCommand}">

HomeViewModel (DataContext):

private bool _isSelected;
public bool IsSelected
{
    get { return _isSelected; }
    set
    {
        if (_isSelected != value)
        {
            _isSelected = value;
            OnPropertyChanged(nameof(IsSelected));
        }
    }
}

private void DoJob(object sender)
{
    Class1 class1 = new Class1();
    class1.Method();
}

Class1:

HomeViewModel viewModel = new HomeViewModel();

public void Method()
{
    if (viewModel.IsSelected)
    {

    }
}

Как я могу использовать статус IsSelected в других классах?

К сожалению, я не могу получить к нему доступ напрямую (не знаю почему).

Спасибо за вашу помощь .

1 Ответ

2 голосов
/ 21 июня 2020

Похоже, вы создаете новый экземпляр HomeViewModel в своем Class1. Это то, что вы намеревались сделать? Если вы хотите работать с HomeViewModel, из которого вы создаете Class1, вам необходимо передать ссылку на него. Примерно так:

HomeViewModel:

private void DoJob(object sender)
{
    Class1 class1 = new Class1(this);
    class1.Method();
}

Class1:

//constructor
public Class1(HomeViewModel _viewModel)
{
    viewModel = _viewModel;
}

HomeViewModel viewModel;

public void Method()
{
    if (viewModel.IsSelected)
    {
        
    }
}

Извините, если я упустил суть здесь.

EDIT: Предполагая, что ваша MainWindowViewModel на самом деле HomeViewModel

...