【发布时间】:2019-08-11 07:01:57
【问题描述】:
我正在使用 BoolToVisConverter 绑定 RadioButton 可见性。
我把它放在 xaml 文件中:
xmlns:VM="clr-namespace:ScreenS.ViewModel"
<Window.DataContext>
<VM:MainViewModel />
</Window.DataContext>
<Window.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVisConverter" />
</Window.Resources>
<RadioButton x:Name="SCB0" Visibility="{Binding ShowSCB0, Converter={StaticResource BoolToVisConverter}, FallbackValue=Hidden}" />
在 MainViewModel 文件中,我输入:
using System.ComponentModel;
namespace ScreenS.ViewModel
{
public class MainViewModel : INotifyPropertyChanged
{
private bool _scb0;
private void NotifyPropertyChanged(string info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
public event PropertyChangedEventHandler PropertyChanged;
public bool ShowSCB0
{
get { return _scb0; }
set
{
_scb0 = value;
NotifyPropertyChanged("ShowSCB0");
}
}
}
最后,在 MainWindow 文件中,我设置了:
public MainWindow()
{
InitializeComponent();
DataContext = new MainViewModel();
}
MainViewModel mainView => DataContext as MainViewModel;
private void Window_Loaded(object sender, RoutedEventArgs e)
{
mainView.ShowSCB0 = true;
}
到这里为止,一切都很好。 问题是当我尝试从另一个类更改此值时。 我正在使用:
class abc
{
MainViewModel viewModel = new MainViewModel();
public void someFunction()
{
viewModel.ShowSCB0 = true;
}
这不会设置可见性..
我有点迷路了,我哪里错了?
【问题讨论】:
-
“我哪里出错了” - 您有 3 个不同的 MainViewModel 实例:
<VM:MainViewModel />、DataContext = new MainViewModel();、MainViewModel viewModel = new MainViewModel();。你需要和一个人合作 -
有点帮助,能不能顺便说点细节?
-
为什么 abc 类与 mainwindowviewmodel 完全断开?如果它实际上是一个模型类,则更常见的是实例化它或解析 mainwindowviewmodel 中的实例。解析为使用依赖注入容器。
标签: c# wpf mvvm binding boolean