我对MVVM很新,我一直在构建我的ViewModel。我有一个包含ICommand
的ViewModel,然后通过命令按钮绑定到我的View中。 ICommand
导致在我的ViewModel上调用过程,然后调用更大的慢速过程。在执行此过程时,我想让控件/ UIElement
的可见性变为可见,然后在过程完成后隐藏(我打算绑定标签并确定进度条的可见性)
例如,在我的视图模型中我有
public void calledFromCommandButton() {
RaisePropertyChange("Starting");
superLongProcedure();
RaisePropertyChange("Finished");
}
这只是感觉有点傻,不得不提出2个不同的属性变化,因此,我认为我做错了。我想我可以通过一个属性更改和转换器来实现吗?
那么,将UIElement可见性绑定到属性更改事件的正确和正确方法是什么?
由于 托马斯
答案 0 :(得分:6)
我建议使用单个boolean
属性(IsWorking或其他),然后使用BooleanToVisibilityConverter
来显示和隐藏按钮。所以,它看起来像是:
<Window ...>
<Window.Resources>
<BooleanToVisibilityConverter x:Key="TrueToVisibleConverter"/>
</Window.Resources>
...
<Button x:Name="CancelButton" Content="Cancel" Visiblity="{Binding IsWorking, Converter={StaticResource TrueToVisibleConverter}}"/>
...
</Window/>