gpt4 book ai didi

c# - 网格上的可见性绑定(bind)不起作用

转载 作者:行者123 更新时间:2023-11-30 20:23:20 26 4
gpt4 key购买 nike

我正在尝试绑定(bind)网格的可见性但无法这样做。

//ViewModel Class
private Visibility _isVisiblePane = Visibility.Hidden;
public Visibility isVisiblePane {
get
{
return _isVisiblePane;
}
set
{

_isVisiblePane = value;
RaisePropertyChanged(() => "isVisiblePane");
}
}
//xaml code
<Grid Visibility="{Binding Path=isVisiblePane}">
....My Content....
</Grid>

调试时,程序将值设置为隐藏,但当我更改 _isVisiblePane 的可见性时,它不会更新 GUI 中的可见性(网格保持隐藏,而 _isVisiblePane 值可见)。

//in some function => on button click, value of _isVisiblePane updates to Visible but grid remains hidden.
isVisiblePane = isLastActiveDoc() == true ? Visibility.Visible : Visibility.Hidden;

错误!在 RaisePropertyChanged("isVisiblePane") 行。好像没有这个名字的属性(property)“在 GalaSoft.MvvmLight.dll 中发生了‘System.ArgumentException’类型的异常,但未在用户代码中处理”

PS:我也尝试过使用 bool 的 IValueConverter 方法。仍然没有弄清楚问题出在哪里。有帮助吗?

最佳答案

不是真的回答,但是:

  • 恕我直言,您不应该在 ViewModel 中使用 Visibility 枚举。看,ViewModels 应该与 View 技术本身无关(例如,意识到 INotifyPropertyChanged 不是 WPF 库的一部分)。因此,改为绑定(bind)到 bool 值并使用 converter .
  • .NET 中的公共(public)属性通常遵循 Pascal Casing,因此,我建议将 isVisiblePane 更改为 IsPaneVisible
  • 仔细检查 View 的 DataContext。
  • 在 Debug模式下运行项目并在控制台中查看有关绑定(bind)的消息。

关于c# - 网格上的可见性绑定(bind)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29152627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com