我有一个安装了Fody PropertyChanged包的 C# Windows Phone 8 MVVM 应用程序。我在类声明之前添加了ImplementPropertyChanged指令:
[CompilerGenerated]
[GeneratedCode("Radarc", "4.0")]
[ImplementPropertyChanged]
public partial class MilitaryRobots_VideosViewModel : ViewModelsBase.VMBase, IViewModels.IMilitaryRobots_VideosViewModel, INotifyPropertyChanged
我在将 View 元素绑定到的类中有以下两个属性:
private Visibility _showDetailsVideo = Visibility.Collapsed;
public Visibility ShowDetailsVideo
{
get
{
return this._showDetailsVideo;
}
set
{
this._showDetailsVideo = value;
this.ShowMainScreen = value == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible;
}
}
private Visibility _showMainScreen = Visibility.Visible;
/// <summary>
/// Never set this property, instead set ShowDetailsVideo instead.
/// </summary>
public Visibility ShowMainScreen
{
get
{
return this._showMainScreen;
}
private set
{
this._showMainScreen = value;
}
}
一个View元素的 Visibility 属性绑定到 View Model 的ShowDetailsVideo属性。另一个View元素的 Visibility 属性绑定到 View Model 的ShowMainScreen属性。在运行时,两个属性getter都被访问,表明这对绑定的 View 元素至少访问了一次属性。此外,两个 View 元素确实具有正确的可见性状态。但是,如果我在运行时更改ShowDetailsVideo属性,则访问的是setter,但不会访问getter,表明属性和视图元素属性之间的连接不起作用,尽管我使用了 Fody PropetyChanged 包。属性访问行为与 Fody 包不存在时相同。
如何解决此问题并使其正常工作,以便在运行时正确更新 Visibility 属性的视图元素对?我认为 Fody PropertyChanged 包应该使实现属性更改通知变得不必要。