全部
我有一个问题。现在我正在使用 MVVM 框架来开发 Windows Phone 8 应用程序。我只是想当我按下按钮时,然后开始录制一些东西,当释放按钮时,停止录制,我使用 InvokeCommandAction 来绑定 ViewModel 中的命令,这是代码如下
xml:
<Button x:Name="BtnRecord" Height="50" Width="180" Background="#D43637" Content="Record" Margin="20,0,0,0" Style="{StaticResource BasicButtonStyle}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown">
<i:InvokeCommandAction Command="{Binding StartRecordCommand}"/>
</i:EventTrigger>
<i:EventTrigger EventName="MouseLeftButtonUp">
<i:InvokeCommandAction Command="{Binding EndRecordCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
模型视图:
public ICommand StartRecordCommand
{
get
{
return new DelegateCommand(StartRecord);
}
}
public ICommand EndRecordCommand
{
get
{
return new DelegateCommand(EndRecord);
}
}
private void StartRecord(object parameter){}
private void EndRecord(object parameter){}
当我调试应用程序时,我发现它既没有触发 MouseLeftButtonDown 也没有触发 MouseLeftButtonUp 事件,所以我注册了两个事件处理程序,如下所示:
BtnRecord.AddHandler(UIElement.MouseLeftButtonDownEvent, new MouseButtonEventHandler(Button_MouseLeftButtonDown), true);
BtnRecord.AddHandler(UIElement.MouseLeftButtonUpEvent, new MouseButtonEventHandler(Button_MouseLeftButtonUp), true);
private void Button_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
}
private void Button_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
}
OK,继续,但是下一个问题来了,它没有触发 ViewModel 中的 ICommand,它调用了 Button_MouseLeftButtonDown,哦,天哪,我疯了
有人知道如何在 ViewModel 中调用 ICommand 吗?还是另一种实现方式?