我試過你的代碼,我發現它可以在PreviewMouseDown
上使用事件觸發器正常工作,它只是首先執行該命令,然後動畫會觸發。
我的繼承人資源
<Storyboard x:Key="sbCloseTitleEdit">
<ColorAnimation Storyboard.TargetProperty="(Rectangle.Fill).Color"
To="Blue" Duration="0:0:3" Storyboard.TargetName="rect" >
</ColorAnimation>
</Storyboard>
我的XAML
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Button Content="Save" Command="{Binding SaveCommand}" >
<Button.Triggers>
<EventTrigger RoutedEvent="Button.PreviewMouseDown">
<EventTrigger.Actions>
<BeginStoryboard
Storyboard="{StaticResource sbCloseTitleEdit}"/>
</EventTrigger.Actions>
</EventTrigger>
</Button.Triggers>
</Button>
<Rectangle Name="rect" Width="30" Height="30"
Grid.Column="1" Fill="Red" />
</Grid>
和我的視圖模型
public class MainViewModel
{
public ActionCommand SaveCommand { get; private set; }
public MainViewModel()
{
SaveCommand = new ActionCommand();
}
}
public class ActionCommand : ICommand
{
public void Execute(object parameter)
{
// gets fired if event trigger is preview mode
}
public bool CanExecute(object parameter)
{
return true;
}
public event EventHandler CanExecuteChanged;
}
你肯定還沒有錯過了什麼?
好問題...我懷疑作爲處理的EventTrigger標誌着事件,所以該命令是從來沒有調用。不知道如何解決它,雖然... – 2010-10-11 18:32:24