在执行命令后尝试触发click事件时遇到问题。我试图遵循MVVM的开发风格。

以下是该方案:

在我的应用程序中,我有一个2个N按钮的网格,其中N是一组动态加载的按钮(有时它是2 x 2,有时是5 x 9,我不知道)。最初,除第一列外,所有按钮列都将被隐藏。单击第一列后,将执行一个Command,并播放淡入淡出动画并显示第二列中的某些按钮,具体取决于第一列中单击的按钮。例如,单击第一列中的顶部按钮将显示第二列中的前四个按钮,而第一列中的底部按钮将显示第二列中的前三个按钮。

问题在于:

对于每个按钮,我将CommandParameter设置为第一列中的每个按钮。当命令执行时,数据被处理,并在VM中设置一个属性,该属性说明按下了哪个按钮(我只是再次使用CommandParameter)。在处理数据时,我想向用户显示下一组按钮。我有一个点击事件,它从VM获取CommandParameter并播放动画以显示正确的按钮。

然而,问题是WPF喜欢在命令被触发之前先执行Click事件。这是一个问题,因为VM中的属性说明了哪个按钮被点击了!

所以这让我有几个问题......

1)有没有办法在触发事件之前执行命令?

2)我做得对吗? :P

有帮助吗?

解决方案

您可以在按钮上设置DataTriggers,而不是使用Click事件处理程序。

他们可以回应您的ViewModel中的属性,隐藏您不想显示的按钮,并显示您执行的按钮。

关于这一点的好处是你的View可以完全在XAML中完成,而ViewModel只是设置状态(即:我处于这种状态),并且View将自动保持更新,因为绑定将导致要开火的新DataTrigger。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top