0

カスタム チェックボックス列を含む Silverlight プロジェクトで DataGrid を使用しています。そのCommandプロパティを ViewModel クラスのプロパティにバインドしました。さて、問題は、次のコードを書いたコマンドパラメーターを介してDataGridの「選択されたアイテム」を送信したいということです:

<sdk:DataGrid AutoGenerateColumns="False" Margin="10,0,10,0" Name="dataGridOrders" ItemsSource="{Binding OrderList}" Height="190">
    <sdk:DataGrid.Columns>
        <sdk:DataGridTemplateColumn Header="Select">
            <sdk:DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <CheckBox>
                        <is:Interaction.Triggers>
                            <is:EventTrigger EventName="Checked">
                                <is:InvokeCommandAction Command="{Binding Source={StaticResource ExecutionTraderHomePageVM},Path=OrderSelectedCommand,Mode=TwoWay}"
                                                        CommandParameter="{Binding ElementName=dataGridOrders,Path=SelectedItem}" />
                            </is:EventTrigger>
                            <is:EventTrigger EventName="Unchecked">
                                <is:InvokeCommandAction Command="{Binding Source={StaticResource ExecutionTraderHomePageVM},Path=OrderSelectedCommand,Mode=TwoWay}"
                                                        CommandParameter="{Binding ElementName=dataGridOrders,Path=SelectedItem}" />
                            </is:EventTrigger>
                        </is:Interaction.Triggers>
                    </CheckBox>

しかし、私は常にnullコマンドのExecuteメソッドのパラメーターを取得しています。WidthなどのDataGrid の他のプロパティを試してみましたが、役に立ちActualHeightませんでした。ここで何が欠けていますか?

4

2 に答える 2

1

ここでの問題は、名前スコープの 1 つです。つまり、a 内の XAML にDataTemplateは独自の「名前スコープ」があり、その外部の名前は表示されません。DataGrid特に、の外側にある親を見つけることができませんDataTemplate

チェック済みおよび未チェックのイベントをリッスンし、それらに基づいてコマンドを実行する理由がわかりません。あなたが達成しようとしていることは完全には明らかではありません。代わりに、双方向バインディングを使用してのプロパティを (行レベルの) ビューモデル クラスのプロパティにバインドし、このプロパティのセッターからコマンド機能を呼び出しIsCheckedます。ビュー モデル プロパティを双方向バインディングでsプロパティにバインドすることで、選択したアイテムを取得できます。CheckBoxboolboolDataGridSelectedItem

于 2012-10-28T14:01:43.117 に答える
0

EventTrigger を次のように使用する必要があると思います

<is:EventTrigger EventName="Checked">
<is:InvokeCommandAction Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.CheckBoxUncheckedCommand}"  CommandParameter="{Binding}"/>
                                </is:EventTrigger>
于 2012-10-29T18:18:48.210 に答える