2011-10-25 15 views
0
シルバー

にViewModelにするために、私は次のコードを使用していますが、私のviewmodelにseletcedMemberにバインドするのSelectedItemを得るカント:バインドデータグリッドの編集ハイパーリンクは、私はデータグリッドの[編集]リンクをバインドするにはどうすればよい

<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> 

と私の見解では

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

私は、コードを通してステップと、それは私のコマンドを打つが、SelectedMemberは常にnullである:モデル私はSelectedMemberプロパティを持っています。

+0

MemberDetailViewCommandとは何ですか?どのタイプですか? DataGridのdataContextに何がバインドされていますか? – sll

答えて

0

DataGridでは、DataGridの各列にグリッドのデータコンテキストのメンバのデータが設定されていることに注意してください。 DataGridのItemsSourceを設定するとき、基本的に親のDataContextを定義しています。親DataContextは各列のデータメンバーのソースとして使用されます。

あなたのケースでは、ハイパーリンクのデータコンテキストはViewModelではなく、親のDataGrid(コードスニペットからは見えません)のItemsSourceプロパティになります。

XAMLでコマンドをStaticResourceにするか、親コントロールのDataContextを取得するために相対バインドを使用する必要があります。

これを行う方法の例は、this postを参照してください。

+0

こんにちは、私はコードを編集しましたが、コマンドを実行しましたが、SelectedMemberをDataGridのSelectedItemにバインドするプロンプトを表示しています – user282807

+0

@ user282807 - RaisePropertyChangedステートメントで、 'Selected'と 'Member'の間に 'I'があります。それを 'SelectedMember'に変更し、それが動作するかどうかを確認してください。 –

+0

はい私はそれを見て固定しましたが、違いはありません。 – user282807

関連する問題