【发布时间】:2014-01-01 04:12:55
【问题描述】:
我正在使用 mvvm 开发一些 wpf 应用程序。我正在尝试同时使用按钮单击事件和命令,但命令永远不会被执行。此外,当我只使用没有点击事件的命令时,它可以完美运行。代码如下:
<ControlTemplate x:Key="reminderDataTemplate">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="25" />
<RowDefinition Height="150" />
<RowDefinition Height="20" />
</Grid.RowDefinitions>
<Label Grid.Row="0" Content="New reminder:" HorizontalAlignment="Left" />
<TextBox Text="{Binding Path=ReminderText, UpdateSourceTrigger=PropertyChanged}" Grid.Row="1" Height="150" Width="200" HorizontalAlignment="Left"/>
<Button Name="btnSaveReminder" Grid.Row="2" Content="Save" Width="auto" Height="20" HorizontalAlignment="Left" Click="btnSaveReminder_Click" Command="{Binding Path= btnSaveReminder}" />
</Grid>
</ControlTemplate>
为什么会这样?
顺便提一下,由于我的视图和视图模型在不同的项目中,所以我必须同时使用单击和命令。
更新: 还要说的是,当我在控件模板之外的按钮中同时使用单击和命令时,一切正常。
【问题讨论】:
-
尝试删除代码>Click="btnSaveReminder_Click"
-
是的,当我删除它时,命令执行得很好。但我需要同时执行点击事件和命令。
-
我必须同时使用单击和命令,因为我的视图和视图模型在不同的项目中...视图和视图模型通常在不同的项目中,但这并不能解释原因您需要同时使用这两者...您在
Click处理程序中做什么? -
我的应用程序的结构不允许我将我的 wpf 项目的引用添加到我的 MVVM 项目中,所以我无法从 mvvm 访问我的 wpf 组件。我只使用点击事件来改变一些列表框的控制模板,命令用于将一些数据保存到数据库中。
-
@Stojdza 也不应该。 ViewModel 根本不应该知道 View。 是否您的 ViewModel 有一个名为
btnSaveReminder的 ICommand 派生属性?您使用的是哪个框架?