- MainWindow.xaml具有視圖模型MainWindowViewModel。
- MainWindow.xaml具有稱爲 CustomBrowserControl.xaml
- CustomBrowserControl.xaml具有名爲元件web瀏覽器的嵌套用戶控件。
MainWindowViewModel有一個需要參考 webBrowser的命令。獲取對嵌套控件的子控件的引用?
如何傳遞參考?
我想出了
基於EthicalLogics和sa_ddam213的答覆,解決方案是,在我的主窗口後面的代碼,如果我指定的用戶控制(在XAML中,添加屬性x:Name =「something」),然後我可以引用用戶控件對象。然後我可以將該引用傳遞給MainWindowViewModel。這也顯然是不好的做法,因爲它打破了MVVM。
所以我做了什麼,而不是
在我的用戶控制,我創建了兩個新的depdency屬性如下:
public static readonly DependencyProperty TakePictureCommand = DependencyProperty.Register("TakePicture", typeof(ICommand), typeof(BrowserControl));
public ICommand TakePicture
{
get { return (ICommand)GetValue(TakePictureCommand); }
set { SetValue(TakePictureCommand, value); }
}
現在在我的MainWindow.xaml,我放置一個按鈕。我可以用下面的XAML綁定的按鈕TakePicture命令:
<Window>
<Button Content="Take Picture" Command="{Binding ElementName=browserControl, Path=DataContext.TakePicture}" FocusManager.IsFocusScope="True" ...>
<myUserControls:BrowserControl x:Name="browserControl" ... />
</Window>
這樣,我並不需要通過參考可言的,可能只是讓用戶控制命令/方法,由主窗口上的動作調用。
非常感謝那些迴應!
難道你不只是暴露在您的自定義控件的webBrowser公共財產?或者你是否可以不修改自定義控件? – 2013-05-08 03:37:21
@ sa_ddam213:我剛剛學習WPF,並試圖滿足瘋狂的截止日期。現在,在我的應用程序開始,我實例化我的MainWindow的View Model對象。然後我創建一個新的MainWindow對象,並將MainWindowViewModel注入到MainWindow對象中,成爲MainWindow的數據上下文。然後我調用MainWindow.Show(),因爲CustomBrowserControl是在MainWindow的xaml中定義的,所以它很簡單。 我不知道任何有關依賴屬性。 – 2013-05-08 03:42:41
@ sa_ddam213:自從發佈這個以來,我已經想出了一個可以工作的替代scenerio,如果我能弄清楚如何在我的MainWindow調用一個按鈕來調用我的CustomUserControl屬性。 – 2013-05-08 03:44:04