好吧,我看到你已經知道了答案......無論如何...... 你做錯了,你已經在XAML中將命令綁定到了命令中,而你沒有命令:)基本上你搞砸了標準的「代碼 - 背後的方法「,讓我們說」MVVM方法「/綁定。
所以,當你觸動了代碼隱藏並創建DoSomethingEventHandler
那裏你可以簡單地
<UserControl .. Loaded="UserControl_Loaded">
..
</UserControl>
與代碼隱藏:
private void UserControl_Loaded(object sender, System.Windows.RoutedEventArgs e)
{
// Do Something
}
這將是罰款...但它不是MVVM :]
那麼和你的新方法(沒有代碼隱藏/讓我們說MVVM)...
如果使用棱鏡V4.1,你可以看看here這項功能大多數人在棱鏡:)錯過,但有提到的解決方案:)
以及你知道你需要ICommand
你結合......它確實不一定是DelegateCommand
你可以使用你想要的...(我更喜歡和使用RelayCommand
)
那麼但是我們從上述鏈接中學到了什麼?
- 有時......不是這個時候......
ICommand
可以改變控制啓用狀態,當你不使用Prism's Interactivity
它不更新,您只需使用Blend SDK's Interactivity
...你不需要這一次。 .. 我承認...但也許有一天:)
- 而且你也不需要處理那些無聊的參數,因爲你沒有得到他們無論如何:d(當你需要的參數數量可以使用MVVM光例如)
所以你能做的最好的是這樣的:
<UserControl
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:prism="clr-namespace:Microsoft.Practices.Prism.Interactivity;assembly=Microsoft.Practices.Prism.Interactivity"
...
>
...
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<prism:InvokeCommandAction Command="{Binding MyCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
和您的視圖模型,例如:
public ICommand MyCommand
{
get
{
return new RelayCommand(this.MyCommandExecute);
}
}
private void MyCommandExecute()
{
// DO Something...
}
對不起,我unswered已經回答的問題,但我想我可能添加一些有趣的信息:)
感謝您的答案!我總是喜歡閱讀解決方案! – Crystal