0

次のようなXAMLツリーがあります。

<Window>
    <Grid>
        <DockPanel>
               <DataGrid>
                      <DataGrid.Resources>
                              <CheckBox Command="{Binding Command}" CommandParameter="??" />
                      </DataGrid.Resources>
               </DataGrid>
              <StackPanel>
                    <ChartLegend>
                    </ChartLegend>
                    <DataChart>
                    </DataChart>
              </stackPanel>
        </DockPanel>
    </Grid>
</Window>

onからonのようにDataChartオブジェクトが欲しいです。CommandParameterViewModelCommandDataGrid

私の調査結果:

DockPanelオブジェクトをとして取得しているので、CommandParameterメソッドFindName("")を適用してを取得する必要がありDataChartます。そして、さらに変更を加えます。

しかし、ツリーを回避または検索するために、DataChartオブジェクトを直接必要とします。TypeCasting

4

1 に答える 1

0

データチャートをリソース内の名前付きリソースとして保持し、DockPanelコマンドパラメータへの静的リソースバインディングを使用できます。次に、を使用ContentControlしてホストします。

このような...

    <DockPanel>
            <DockPanel.Resources>
                 <DataChart x:Key="MyDataChart">
                 </DataChart>
            </DockPanel.Resources>
            <DataGrid>
                   <DataGrid.Resources>
                           <CheckBox 
                                 Command="{Binding Command}"
                                 CommandParameter="{StaticResource MyDataChart}" />
                   </DataGrid.Resources>
            </DataGrid>
           <StackPanel>
                 <ChartLegend>
                 </ChartLegend>
                 <ContentControl Content="{StaticResource MyDataChart}"/>
           </stackPanel>
     </DockPanel>

同じ ものを使用して別のエリアをホストしないことを望んでいますMyDataChart(「ビジュアルツリーの親の切断」エラーが発生するため)。

私はあなたにこれを尋ねなければなりませんが...なぜCheckBoxあなたのDataGrid資源に孤独があるのですか?

また、ビューモデルにUIコントロール(チャートコントロール)を提供しているため、あなたと私のソリューションはMVVMを壊します。

于 2011-09-19T09:17:07.437 に答える