2010-04-06 112 views
2

我是WPF的新手,本着嘗試做事情的精神,正確的方式試圖在我的應用程序中實現MVVM。我已經使用了喬希史密斯經常提到的文章,除了讓我意識到我知道得有多少,這讓我有點難過。來自usercontrol的WPF relaycommand

具體來說,我有一個頁面,使用RelayCommand對象直接在頁面上處理按鈕,這很好。但是,按鈕(保存)最終將位於也包含其他按鈕的用戶控件上,並且該控件將用於多個頁面。

我的問題是這樣的;如何將命令從用戶控件轉發到包含它的頁面(即viewmodel)?如果我綁定到用戶控件的命令

public ICommand SaveCommand 
{ 
    get 
    { 
    if (_saveCommand == null) 
    { 
     _saveCommand = new RelayCommand(
      param => this.Save(), 
      param => this.CanSave 
     ); 
    } 
    return _saveCommand; 
    } 
} 

,我將需要使用用戶控件本身保存方法的時候,其實我應該處理它的視圖模型。

任何人都可以幫忙嗎?

回答

0

所以,你需要綁定到父的(page)DataContext(viewmodel)?嘗試使用RelativeSource綁定到SaveCommand:http://msdn.microsoft.com/en-us/library/ms743599.aspx

+0

謝謝! 如果有人有興趣,可以這樣做; Command =「{Binding SaveCommand}」 CommandParameter =「{Binding RelativeSource = {RelativeSource FindAncestor,AncestorType = {x:Type UserControl}}}」 – pilsdumps 2010-04-08 20:09:16

0

嘗試探索此one。它將幫助你很多的綁定和中繼命令。

有了您的擔心,您需要綁定用戶控件的datacontext。如果你打算使用一個按鈕來保存你的命令。試試這個:

<Grid x:Name="LayoutRoot" DataContext="{ yourViewModelHere }"> 
     <Button x:Name="btnSave" Command="{Binding SaveCommand}"/> 
</Grid> 
+0

「ONE」鏈接已死亡。有一個工程? – 2015-03-17 18:14:47