访问 ViewModel C# 中的组件
Accessing a component in a ViewModel C#
我有一个 class 在 C# 中扩展了 ViewModelBase
。复选框上已经有触发器:
public bool PrintPackingCode
{
get
{
return this.reportConfiguration.PrintPackingCode;
}
set
{
this.reportConfiguration.PrintPackingCode = value;
this.OnPropertyChanged("PrintPackingCode");
}
}
我想连接到该事件并呈现 GroupBox
以禁用,但我找不到访问 GroupBox 的方法。在 .xaml
中,我将我的 Box 命名为 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>
IsEnabled 是环境变量 属性 这意味着如果您禁用 GroupBox,则该组框内的所有控件也将被禁用。
尝试像这样在 GroupBox 上添加绑定:
IsEnabled="{Binding PrintPackingCode}"
如果给复选框命名,也可以将 IsEnabled 绑定到复选框。
<CheckBox x:Name="myCheckBox" .../>
<GroupBox IsEnabled="{Binding ElementName=myCheckBox, Path=IsChecked}"/>
在你的虚拟机上创建一个新的 属性 say
private bool _isGroupEnabled;
public bool IsGroupEnabled
{
get
{
return _isGroupEnabled;
}
set
{
_isGroupEnabled = value;
this.OnPropertyChanged("IsGroupEnabled");
}
}
现在通过为 PrintPackingCode
调整您的 set
来加入通知流程
set
{
this.reportConfiguration.PrintPackingCode = value;
IsGroupEnabled = !value; // reverse of packing to enable/disable.
this.OnPropertyChanged("PrintPackingCode");
}
现在绑定你的组框:
isEnabled = "{Binding IsGroupEnabled}"
我有一个 class 在 C# 中扩展了 ViewModelBase
。复选框上已经有触发器:
public bool PrintPackingCode
{
get
{
return this.reportConfiguration.PrintPackingCode;
}
set
{
this.reportConfiguration.PrintPackingCode = value;
this.OnPropertyChanged("PrintPackingCode");
}
}
我想连接到该事件并呈现 GroupBox
以禁用,但我找不到访问 GroupBox 的方法。在 .xaml
中,我将我的 Box 命名为 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>
IsEnabled 是环境变量 属性 这意味着如果您禁用 GroupBox,则该组框内的所有控件也将被禁用。
尝试像这样在 GroupBox 上添加绑定:
IsEnabled="{Binding PrintPackingCode}"
如果给复选框命名,也可以将 IsEnabled 绑定到复选框。
<CheckBox x:Name="myCheckBox" .../>
<GroupBox IsEnabled="{Binding ElementName=myCheckBox, Path=IsChecked}"/>
在你的虚拟机上创建一个新的 属性 say
private bool _isGroupEnabled;
public bool IsGroupEnabled
{
get
{
return _isGroupEnabled;
}
set
{
_isGroupEnabled = value;
this.OnPropertyChanged("IsGroupEnabled");
}
}
现在通过为 PrintPackingCode
set
来加入通知流程
set
{
this.reportConfiguration.PrintPackingCode = value;
IsGroupEnabled = !value; // reverse of packing to enable/disable.
this.OnPropertyChanged("PrintPackingCode");
}
现在绑定你的组框:
isEnabled = "{Binding IsGroupEnabled}"