2012-04-27 90 views
0

這裏我有名爲「ChildView」的UserControl,它有一個名爲「listView」的ListView控件。 我想綁定這個listView的「SelectedItems」屬性作爲命令參數從我的主窗口,但沒有發生。 執行函數參數始終爲空。WPF MVVM:無法從主視圖中綁定子視圖控件屬性

下面是代碼片段。

ChildView 

<UserControl x:Class="MyProj.Views.ChildView" 
………….. 
    <ListView x:Name="listView" ………….. 


MainView 

………….. 
<views:ChildView x:Name="childView" /> 
………….. 
<Button Command="{Binding ElementName=childView, Path=DataContext.CmdCopyLines}" CommandParameter="{Binding ElementName=childView, Path=DataContext.listView.SelectedItems}" Label="Copy" /> 
………….. 

但它是直接從子視圖發生

ChildView 

<UserControl x:Class="MyProj.Views.ChildView" 
………….. 
    <ListView x:Name="listView" 
………….. 
<Button Command="{Binding CmdCopyLines}" CommandParameter="{Binding ElementName=listView, Path=SelectedItems}" Label="Copy" /> 
………….. 

任何幫助,將不勝感激

+0

在您的ChildView用戶控件上,您是否將其DataContext設置爲您的ViewModel,然後在您的ViewModel中創建Command,或者在將ViewModel設置爲DataContext之前完全構建並初始化了ViewModel? – 2012-04-27 09:03:40

+0

嗨,Dean,我的孩子ViewModel完全構造並初始化(也是命令),然後將其設置爲DataContext。從應用程序我創建MainWindow ViewModel對象,並從MainWindow ViewModel的構造函數我創建子ViewModel對象,最後我爲MainWindow和其子View設置Data DataContext。 – Shibu 2012-04-27 09:45:26

回答

0

路徑= DataContext.listView.SelectedItems是不正確的,你的情況,因爲你的datacontext是您的childview模型

將屬性添加到您的childviewmodel並將其綁定到您的selectedItems,然後您可以執行:

<Button Command="{Binding ElementName=childView, Path=DataContext.CmdCopyLines}" 
     CommandParameter="{Binding ElementName=childView, Path=DataContext.MySelectedItems}" Label="Copy" /> 
+0

在這裏,我不能在我的ChildViewModel中爲ListView - SelectedItems創建屬性,因爲它不是DependencyProperty。 請檢查此鏈接 https://connect.microsoft.com/VisualStudio/feedback/details/596732/binding-to-the-selecteditems-property-of-a-listbox-in-silverlight 解決此問題的一種解決方法方案是,將SelectedItems作爲CommandParameter發送。 – Shibu 2012-04-27 10:05:00

相關問題