2012-06-05 33 views
0

我想綁定DataGridSelectedItem用戶控制到DependencyProperty 內,這是我的代碼:爲什麼我不能將DataGrid SelectedItem綁定到UserControl內部的DependencyProperty?

在用戶控制

DataGridControl):

 public static readonly DependencyProperty DataGridSelectedItemProperty 
     = DependencyProperty.Register(
     "DataGridSelectedItem" 
     , typeof(object) 
     , typeof(DataGridSelectorControl) 
     , new UIPropertyMetadata(null)); 

    public object DataGridSelectedItem 
    { 
     get { return (object)GetValue(DataGridSelectedItemProperty); } 
     set { SetValue(DataGridSelectedItemProperty, value); } 
    } 

    <DataGrid ItemsSource="{Binding Source={StaticResource theSource}}" 
      SelectedItem="{Binding ElementName=DataGridControl,Path=DataGridSelectedItem,UpdateSourceTrigger=PropertyChanged}" /> 

,並在視圖模型:

object projectSelectedItem; 
    public object ProjectSelectedItem 
    { 
     get 
     { 
      return projectSelectedItem; 
     } 
     set 
     { 
      projectSelectedItem = value; 
      RaisePropertyChanged("ProjectSelectedItem"); 
     } 
    } 

並鑑於:

<MvvmCommonControl:DataGridControl DataGridSelectedItem="{Binding ProjectSelectedItem}" DataGridDataCollection="{Binding DataCollection}"/> 

但它不工作!

回答

0

您有以下的用戶控件:

SelectedItem="{Binding ElementName=DataGridControl, 

不過是你的用戶控件命名DataGridControl

<UserControl 
    ... 
    x:Name="DataGridControl"> 
+0

:我這裏沒有寫完整的代碼!但我絕對有它! –

+0

您是否能夠發佈複製問題的代碼? – devdigital

0

在XAML使用以下代碼

<DataGrid ItemsSource="{Binding Path=Person,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="False" SelectedItem="{Binding Path=SelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"> 

在視圖模型選定item.Here客戶創建屬性是由具有像地址,姓名,訂單ID屬性的類。

private Customer selectedItem = new Customer(); 

     public Customer SelectedItem 
     { 

      get 
      { return selectedItem; } 
      set 
      { 
       selectedItem = value; 
       InvokePropertyChanged("SelectedItem"); 
      }     
     } 

創建一個類來定義依賴屬性

class DataGridSelectedItemBehaviour:DependencyObject 
    { 
     public static readonly DependencyProperty SelectedItemProperty 
     = DependencyProperty.Register(
     "SelectedItem" 
     , typeof(object) 
     , typeof(CustomerViewModel) 
     , new UIPropertyMetadata(null)); 

     public object SelectedItem 
     { 
      get { return (object)GetValue(SelectedItemProperty); } 
      set { SetValue(SelectedItemProperty, value); } 
     } 

    } 
相關問題