C# 要在wpf中显示/隐藏来自ViewModel的控件吗
我想在wpf中显示/隐藏ViewModel控件。但是NotifyingProperty不能正常工作这是我的代码 这是我对设计视图的控制C# 要在wpf中显示/隐藏来自ViewModel的控件吗,c#,wpf,mvvm,C#,Wpf,Mvvm,我想在wpf中显示/隐藏ViewModel控件。但是NotifyingProperty不能正常工作这是我的代码 这是我对设计视图的控制 <ZuneWithCtrls_UserControls:SmallClock Visibility="{Binding IsProcessStart, Converter={StaticResource BooleanToVisibilityConverter}}" Height="Auto" Width="Auto" V
<ZuneWithCtrls_UserControls:SmallClock Visibility="{Binding IsProcessStart, Converter={StaticResource BooleanToVisibilityConverter}}"
Height="Auto" Width="Auto" VerticalAlignment="Center" HorizontalAlignment="Center" Canvas.Top="150"/>
我正在更改按钮单击命令的此属性,但它不起作用。请帮忙。
如果这将从Dependency属性起作用,那么谁可以在ViewModel中使用Dependency属性
加水剂接种
[ViewModel]
public class AdvanceSearchViewModel : PageViewModel, INotifyPropertyChanged
{
/// <summary>
/// Initializes a new instance of the <see cref="AdvanceSearchViewModel"/> class.
/// </summary>
///
public event PropertyChangedEventHandler PropertyChanged;
public AdvanceSearchViewModel()
{
IsProcessStart = false;
}
//IsProcessStart
private bool _IsProcessStart;
public bool IsProcessStart
{
get { return _IsProcessStart; }
set
{
_IsProcessStart = value;
OnPropertyChanged("IsProcessStart");
}
}
// Create the OnPropertyChanged method to raise the event
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
}
[ViewModel]
公共类高级搜索视图模型:页面视图模型,INotifyPropertyChanged
{
///
///初始化类的新实例。
///
///
公共事件属性更改事件处理程序属性更改;
公共高级搜索视图模型()
{
IsProcessStart=false;
}
//iProcessStart
私有bool\u IsProcessStart;
公共bool IsProcessStart
{
获取{return\u IsProcessStart;}
设置
{
_IsProcessStart=值;
OnPropertyChanged(“IsProcessStart”);
}
}
//创建OnPropertyChanged方法以引发事件
受保护的void OnPropertyChanged(字符串名称)
{
PropertyChangedEventHandler处理程序=PropertyChanged;
if(处理程序!=null)
{
处理程序(此,新PropertyChangedEventArgs(名称));
}
}
}
不应在ViewModel中使用DependencyProperty
在ViewModel中应该执行的操作是,实现INotifyPropertyChanged
您应该在ViewModel中实现这样的InotifyProperty更改
public class AdvanceSearchViewModel: INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
.....
Your Properties Here
.....
private bool _isProcessStart
public bool IsProcessStart
{
get { return _isProcessStart; }
set {
_isProcessStart = value;
OnPropertyChanged("IsProcessStart"); }
}
}
要设置此属性,只需跟进ViewModel并按如下方式进行设置-
private void MyButton_Click(object sender, RoutedEventArgs e)
{
var isStarted = ViewModel.IsProcessStart;
ViewModel.IsProcessStart = !isStarted;
}
嗨,Mayur,我试过这个,但在我的情况下不起作用。请检查我的更新代码。谢谢你的回复。在阅读你的评论之后。我在我这边试过,效果很好。还请提及如何设置我发布的“IsProcessStart”的值1。用户控制代码,2。ViewModel代码(带IsProcessStart).Visibility=“{Binding IsProcessStart,Converter={StaticResource BooleanToVisibilityConverter}}”我正在使用Apex.dll。这有什么问题吗。我已经用InotifyPropertyChanged更新了我的帖子,但仍然不起作用。Plz帮助
public class AdvanceSearchViewModel: INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
.....
Your Properties Here
.....
private bool _isProcessStart
public bool IsProcessStart
{
get { return _isProcessStart; }
set {
_isProcessStart = value;
OnPropertyChanged("IsProcessStart"); }
}
}
private void MyButton_Click(object sender, RoutedEventArgs e)
{
var isStarted = ViewModel.IsProcessStart;
ViewModel.IsProcessStart = !isStarted;
}