2011-12-28 4 views
0

DataGridのボタンをカスタムコマンドにバインドしようとしています。データグリッドにコマンドをバインドする

何らかの理由で、コマンドは実行されません。

これはXAMLです:

<Grid Name="LayoutRoot"> 
     <ListView Name="ListView1" 
      ItemsSource="{Binding}" 
      IsSynchronizedWithCurrentItem="True"> 
      <ListView.ItemContainerStyle> 
       <Style TargetType="ListViewItem"> 
        <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
       </Style> 
      </ListView.ItemContainerStyle> 
      <ListView.View> 
       <GridView> 
        <GridViewColumn Header="ID" Width="100"> 
         <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <TextBox Text="{Binding Path=id,Mode=OneWay}" 
           Margin="-6,0,-6,0" /> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 
        <GridViewColumn Header="Name" Width="100"> 
         <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <TextBox Text="{Binding Path=name,Mode=OneWay}" 
           Margin="-6,0,-6,0" /> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 
        <GridViewColumn Header="Path" Width="50"> 
         <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <TextBox Text="{Binding Path=path,Mode=OneWay}" 
           Margin="-6,0,-6,0" /> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 
        <GridViewColumn Header="Update" Width="50"> 
         <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <Button CommandParameter="{Binding id}" Command="{Binding ???????????}" Content="Edit"/> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 
       </GridView> 
      </ListView.View> 
     </ListView> 
    </Grid> 
</Window> 

は私がするのではなく、何を書くべき?????????? IDを持つメッセージを表示するにはここでの解決策が見つかりました


WPF DataGrid - Button in a column, getting the row from which it came on the Click event handler

+1

あなたのビューモデルはどのように見えますか? – DHN

答えて

1

私は問題が細胞DataContextであると思います。 DataTemplate内には、親のコンテキストが表示されません。リソースにコマンドを追加して、次のようなことをしてください:

<DataTemplate> 
    <Button CommandParameter="{Binding id}" Command="{StaticResource yourCommand}" Content="Edit"/> 
</DataTemplate> 
+0

リソースへのコマンドの追加にいくつかの問題があるかどうかを教えてください。 –

0

をコマンドを作成しICommandのインターフェースを継承しています。あなたのviewmodelで

public class ShowMessageWithIdCommand : ICommand 
{ 
// Implement it members 
} 

public ICommand ShowMessageWithIdCommand 
{ 
    get{return new ShowMessageWithIdCommand(...);} 
} 

次に、あなたの?????次のようになります。あなたがここに見つけることができます

もっと詳細をShowMessageWithIdCommand:http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

関連する問題