0
我已經實現了一個功能區中的按鈕,並且無法綁定到命令。該功能區位於名爲AppRibbon的UserControl中。 AppRibon控件具有名爲SelectedModule的公共屬性,該屬性具有名爲RenameModuleCmd的屬性。當我爲該按鈕創建一個事件處理程序時,我明確地調用該命令以確保一切正常,如下所示:WPF中的按鈕問題綁定命令
public partial class ApplicationRibbon : UserControl {
public ApplicationRibbon() {
InitializeComponent();
}
public ModuleViewModel SelectedModule { get; set; }
private void ButtonTool_Click(object sender, RoutedEventArgs e) {
SelectedModule.RenameModuleCmd.Execute(null);
}
}
此工作正常。但我顯然不想使用模型後面的代碼......而是使用Command綁定。所以我嘗試了folling綁定,但沒有任何人解僱了命令。
<... Command="{Binding Path=SelectedModule.RenameModuleCmd}" />
<... Command="{Binding Path=AppRibbon.SelectedModule.RenameModuleCmd}" />
我不明白爲什麼這些不起作用。我在命令的CanExecute和Execute方法上以及RenameModuleCmd屬性的getter上設置了斷點,但沒有命中。想法?
感謝JustABill,但我在用戶控件中定義了SelectedModule。因此我不認爲ElementName是相關的。我沒有應用程序方便測試,但我懷疑它不會做出改變。 – 2010-05-11 18:40:33
這看起來很直觀,但相信我,除非傳遞一個ElementName或已設置DataContext,否則無法綁定到UserControl(或Window,或任何其他「最外層」元素)的屬性。如果你已經完成了後者,那麼我只是誤讀,我道歉。 – JustABill 2010-05-11 20:39:35
我剛剛驗證了名稱(),然後將其添加爲綁定:Command =「{Binding ElementName = Ribbon,Path = SelectedModule.RenameModuleCmd}」 Ribbon UserControl has a public SelectedModule的屬性,它是ModuleViewModel類型,其中包含ICommand類型爲RenameModuleCmd的公共屬性。我在getter中設置了斷點,不幸的是沒有任何反應。然而,在同樣的按鈕,如果我添加一個點擊處理程序,執行以下操作,我得到所需的行爲(喜歡避免事件tho):SelectedModule.RenameModuleCmd.Execute(null); 想法? –
2010-05-12 10:33:43