2011-10-25 37 views
0

如何綁定在數據網格的編輯鏈接視圖模型,我使用下面的代碼,但不能得到selectedItem屬性綁定到seletcedMember在我的視圖模型:綁定數據網格編輯超鏈接在Silverlight

<sdk:DataGrid x:Name="MembersListDataGrid" Height="Auto" 
          ItemsSource="{Binding Members}" 
          SelectedItem="{Binding SelectedMember, Mode=OneWay}" 
          AutoGenerateColumns="False" ColumnWidth="*" IsReadOnly="True"> 
    <sdk:DataGrid.Columns> 
     <sdk:DataGridTemplateColumn> 
         <sdk:DataGridTemplateColumn.CellTemplate> 
          <DataTemplate> 
           <Button x:Name="myButton" Content="Edit" HorizontalAlignment="Center" 
      VerticalAlignment="Center" Margin="5" > 
            <i:Interaction.Triggers> 
             <i:EventTrigger EventName="Click"> 
              <mvvmlightcmd:EventToCommand 
        Command="{Binding Main.MemberDetailViewCommand, Mode=TwoWay, Source={StaticResource Locator}}" 
        CommandParameter="{Binding}" PassEventArgsToCommand="True" 
        /> 
             </i:EventTrigger> 
            </i:Interaction.Triggers> 
           </Button> 
          </DataTemplate> 
         </sdk:DataGridTemplateColumn.CellTemplate> 
        </sdk:DataGridTemplateColumn> 

       </sdk:DataGrid.Columns> 
    </sdk:DataGrid> 

在我看來,模型我有SelectedMember屬性:

public Member SelectedMember 
    { 
     get 
     { 
      return _SelectedMember; 
     } 
     set 
     { 
      if (_SelectedMember != value) 
      { 
       _SelectedMember = value; 
       RaisePropertyChanged("SelectedIMember"); 
      } 
     } 
    } 

我一步一步通過代碼,它擊中了我的命令,但SelectedMember始終爲空。

+0

什麼是MemberDetailViewCommand?哪種類型?什麼綁定到DataGrid的dataContext? – sll

回答

0

請記住,對於DataGrid,DataGrid中的每一列都會將其上下文設置爲網格數據上下文的數據成員。當你設置一個DataGrid的ItemsSource時,你基本上定義了父DataContext,它將被用作每列的數據成員的源。

就你而言,超鏈接的數據上下文將不是你的ViewModel,而是父DataGrid的ItemsSource屬性(我們從你的代碼片段中看不到)。

您需要在您的XAML中使命令成爲StaticResource或使用相對綁定來獲取父控件的DataContext。

有關如何執行此操作的示例,請參閱this post

+0

嗨,我編輯了我的代碼,現在我點擊了命令,但有proplem讓SelectedMember綁定到數據網格的SelectedItem – user282807

+0

@ user282807 - 在您的RaisePropertyChanged語句中,'Selected'和'Member'之間有'I'。嘗試將其更改爲「SelectedMember」並查看是否有效。 –

+0

是的,我確實看到它並修復它,但沒有任何區別。 – user282807