Доступ к компоненту в ViewModel C # - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть класс, который расширяет ViewModelBase в C #. На флажке уже есть триггер:

public bool PrintPackingCode
{
    get
    {
        return this.reportConfiguration.PrintPackingCode;
    }

    set
    {
        this.reportConfiguration.PrintPackingCode = value;
        this.OnPropertyChanged("PrintPackingCode");
    }
}

Я хочу подключиться к этому событию и отключить отображение GroupBox, но не могу найти способ доступа к GroupBox. В .xaml я дал своему Ящику имя PackingcodeGroupBox. Все методы и подсказки, которые я нашел, были неприемлемы. Мои попытки побудили:

Direct Access: PackingcodeGroupBox.Enabled = false;
Using a x:Name
this.Resources["mykey"]

Вот еще немного кода:

//At program start assign the view it's view model:
new SmlKonfigurationWindow(new SmlKonfigurationWindowVm(reportConfiguration, smlKonfigurationDialogVm));

public SmlKonfigurationWindow(ISmlKonfigurationWindowVm viewModel)
{
   this.DataContext = viewModel;
   this.viewModel = viewModel;

   this.InitializeComponent();
   this.ShowDialog();
}

xaml:

<CheckBox Content="Content" IsChecked="{Binding Path=PrintPackingCode, UpdateSourceTrigger=PropertyChanged}" Name="PrintPackingCode"/>
<GroupBox Header="Verpackungscode" Name="VerpackungscodeGroupbox">
   //Stuff to be disabled                      
</GroupBox>

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Создайте новое свойство в вашей виртуальной машине, скажем

private bool _isGroupEnabled;

public bool IsGroupEnabled
{
    get
    {
        return _isGroupEnabled;
    }

    set
    {
        _isGroupEnabled = value;
        this.OnPropertyChanged("IsGroupEnabled");
    }
}

Теперь подключитесь к процессу уведомления, настроив set для PrintPackingCode

   set
    {
        this.reportConfiguration.PrintPackingCode = value;
        IsGroupEnabled = !value; // reverse of packing to enable/disable.
        this.OnPropertyChanged("PrintPackingCode");
    }

Теперь свяжите вашу групповую коробку так:

isEnabled = "{Binding IsGroupEnabled}"
0 голосов
/ 08 ноября 2018

IsEnabled - это свойство ambiental, которое означает, что если вы отключите GroupBox, все элементы управления внутри этого группового блока также будут отключены.

Попробуйте добавить привязку на GroupBox следующим образом:

IsEnabled="{Binding PrintPackingCode}"

Вы также можете привязать IsEnabled к флажку, если вы даете имя флажку.

<CheckBox x:Name="myCheckBox" .../>
<GroupBox IsEnabled="{Binding ElementName=myCheckBox, Path=IsChecked}"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...