UWP -更改按钮.来自另一个类的可见性
本文关键字:另一个 可见性 按钮 UWP | 更新日期: 2023-09-27 18:02:42
我正试图从另一个类更改多个按钮可见性。这应该很容易,但我就是不明白。
xaml部分很简单:
<button x:Name="whatever" Visibility="{Binding whateverName}"
视图模型可以是这样的?
private Visibility vis;
public Visibility Vis
{
get { return vis; }
set { vis = value; }
}
但是如果是这样,我怎么传递我的按钮名呢?
更进一步,一个服务文件试图修改可见性值。
由于使用的是Bindings,所以不需要按钮名称标识符。连接是在XAML:
的Binding部分进行的。<Button x:Name="whatever" Visibility="{Binding whateverName}"/>
正在发生的事情是,你说whatever
按钮的可见性属性将被绑定到视图模型中的whateverName
属性值。所以你的视图模型需要看起来像这样:
private Visibility vis;
public Visibility whateverName
{
get { return vis; }
set { vis = value; }
}
要改变按钮的可见性,你需要改变视图模型中whateverName
的值。然而,如果你尝试一下,你会发现这是行不通的。原因是为了使更改对按钮生效,视图模型必须通知视图其属性已经更改。这是通过INotifyPropertyChanged
接口完成的。
所以你的视图模型需要看起来像这样:
public class Viewmodel : INotifyPropertyChanged
{
private Visibility vis;
public Visibility whateverName
{
get { return vis; }
set
{
vis = value;
OnPropertyChanged("whateverName");
}
}
public void OnPropertyChanged(string pName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(pName));
}
public event PropertyChangedEventHandler PropertyChanged;
}
在PropertyChanged事件中,您必须传递要通知的属性名称。在我的例子中,我只是使用了一个与属性名称匹配的字符串值,但是有各种技术可以消除这个"魔法字符串"。
这里有一个问题有很好的答案。