gpt4 book ai didi

c# - 更改属性时遇到问题

转载 作者:太空宇宙 更新时间:2023-11-03 15:14:33 26 4
gpt4 key购买 nike

我的单例类中有一些属性,我想从另外两个类中更改它们。

单调类:

public class EditModeSwitcher:ViewModelBase//MVVMLight Libs
{
private bool isOriginalImgVisible;

private static EditModeSwitcher instance;

public EditModeSwitcher()
{
this.isOriginalImgVisible = false;
}

public static EditModeSwitcher Instance
{
get
{
if (instance == null)
instance = new EditModeSwitcher();

return instance;
}
}

public bool IsOriginalImgVisible
{
get { return this.isOriginalImgVisible; }
set
{
this.isOriginalImgVisible = value;
base.RaisePropertyChanged("IsOriginalImgVisible");
}
}
}

我只留下了一个属性,因为有类似的。接下来我在 App.xaml

中创建了一个实例
<viewModels:EditModeSwitcher x:Key="EditModeSwitcher"/>

我在 MainPage.xaml 需要的地方添加了

Visibility="{Binding IsOriginalImgVisible,Source={StaticResource EditModeSwitcher}, Converter={StaticResource BooleanToVisibilityConverter}}"/>

当它启动时 Visibility 属性有效,但我无法更改它。我在做什么:

使用按钮执行命令

MainViewModel:BaseViewModel

 private async void PickExecute()
{
EditModeSwitcher.Instance.IsFilterImgVisible = true;
EditModeSwitcher.Instance.IsOriginalImgVisible = true;
EditModeSwitcher.Instance.IsUserControlVisibile = false;
}

但是我的 View 确实捕捉到这个并且所有元素都是隐藏的(EditModeSwitcher 的构造函数中的默认值),但是在调试属性时改变了它们的值

还有另一个 View 模型

ImageManipulatorViewModel:BaseViewModel

 public async void MakeCollageExecute()
{
EditModeSwitcher.Instance.IsFilterImgVisible = false;
EditModeSwitcher.Instance.IsOriginalImgVisible = false;
EditModeSwitcher.Instance.IsUserControlVisibile = true;
}

我做错了什么?为什么我的 View 页面没有更改 Visibility 属性?

最佳答案

您正在创建 EditModeSwitcher 的两个类 - 一个在资源中,行 <viewModels:EditModeSwitcher x:Key="EditModeSwitcher"/>第二个在instance = new EditModeSwitcher(); .

虽然它们有一些静态字段/属性,但是 RisePropertyChanged 需要在同一个类上运行 - 它不是静态的。如果您将绑定(bind)更改为:

Visibility="{Binding Instance.IsOriginalImgVisible,Source={StaticResource EditModeSwitcher}, Converter={StaticResource BooleanToVisibilityConverter}}"/>

关于c# - 更改属性时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39546852/

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