2016-06-21 8 views
0

wpf datagridについて、DatagridTemplateColumnの動作について質問があります。WPF DataGrid SelectedItemコマンドが実行されない

<DataGrid 
ItemsSource="{Binding Items, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" 
inf:MultiSelectorBehaviours.SynchronizedSelectedItems="{Binding SelectedItems, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" 
SelectionUnit="FullRow" SelectionMode="Extended"> 
<DataGrid.Columns> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
       <Button Background="Transparent" 
         BorderThickness="0" 
         BorderBrush="Transparent" 
         Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.ExecuteCommand}" CommandParameter="{Binding}" /> 
      </DataTemplate> 
     </DataGridTemplateColumn.CellTemplate> 
    </DataGridTemplateColumn> 
</DataGrid.Columns> 

、私の質問は:私はDataGridTemplateColumnでボタンを押すと、行が選択されていない場合、コマンドは私のモデルで焼成されます。しかし、私の行を最初に選択すると、コマンドは起動されません。なぜ誰が知っていますか?あなたの助けのための

おかげで...

編集:私は「シングル」に「拡張」からのselectionModeを変更すると、期待通りに働いています。しかし、私は "拡張"を使用する必要があります...

+0

私は、あなたが ''と ''を同じものにする必要があると思います。あなたは現在、ボタンのクリックだけを処理しており、モデルを表示するコマンドを渡しています。行全体のクリックが必要な場合があります。 – ViVi

+0

もう少し説明できますか?なぜなら、行が選択されていないときにコマンドが起動される理由を理解できないからです... – streetmaster86

+0

ボタンをクリックすると、ボタンコマンドが実行されるためです。行を選択すると、なぜボタンコマンドが発射されると思いますか? 解雇されません。一つのことをしてください。 PreviewMouseDownのデータテンプレートトリガーを作成し、ボタンと行の両方を処理します。それは仕事をするべきです。問題があれば元に戻してください。 – ViVi

答えて

0

あなたのDataGridでIsSynchronizedWithCurrentItem = "True"を試してください。 「SelectedItem」関連の問題が発生する理由の一般的な原因です。それ以外の場合は、これに対する解決策を得るために、より完全なコードサンプルを提供する必要があります。

+0

IsSynchronizedWithCurrentItemはtrueに設定されていますが、何も変更されません。 – streetmaster86

関連する問題