2011-06-21 10 views
0

Telerik Silverlight RadChartを使用しています。棒グラフの1つをクリックして、MVVMLight RelayCommandを使用してViewModelに渡すと、ItemClickイベントをキャプチャしたいと考えています。Silverlight Telerik Chartクリックイベントパラメータをコマンドパラメータとして

私が持っている問題は、値をCommandParameterに渡す方法がわかりません。

私は

Partial Public Class ConcernsView 
    Inherits Page 

    Public Sub New() 
     InitializeComponent() 


     ' Add any initialization after the InitializeComponent() call. 
     AddHandler Chart.DefaultView.ChartArea.ItemClick, Sub(s, e) stopMe(s, e) 
    End Sub 

    'Executes when the user navigates to this page. 
    Protected Overrides Sub OnNavigatedTo(ByVal e As System.Windows.Navigation.NavigationEventArgs) 

    End Sub 

    Private Function stopMe(ByVal sender As Object, ByVal e As Telerik.Windows.Controls.Charting.ChartItemClickEventArgs) As Object 
     Dim sss As String 
     sss = e.DataPoint.XCategory 
     Stop 
    End Function 

End Class 

の後ろにこれを行う方法の任意のアイデアをdeclaritively

コードを後ろのコードでイベントをキャプチャすることができますが、作業を行うことを好むだろう

<telerik:RadChart x:Name="Chart" Grid.Row="1" ItemsSource="{Binding Path=ConcernsCounts}"> 
    <telerik:RadChart.SeriesMappings> 
     <telerik:SeriesMapping> 
      <telerik:SeriesMapping.SeriesDefinition> 
       <telerik:BarSeriesDefinition ShowItemToolTips="True" /> 
      </telerik:SeriesMapping.SeriesDefinition> 
      <telerik:ItemMapping FieldName="ConcernsCount" DataPointMember="LegendLabel"/> 
      <telerik:ItemMapping FieldName="BusinessUnit" DataPointMember="XCategory"/> 
      <telerik:ItemMapping FieldName="ConcernsCount" DataPointMember="Label"/> 
      <telerik:ItemMapping FieldName="ConcernsCount" DataPointMember="YValue"/> 
     </telerik:SeriesMapping> 
    </telerik:RadChart.SeriesMappings> 
    <telerik:RadChart.DefaultView> 
     <telerik:ChartDefaultView> 
      <telerik:ChartDefaultView.ChartTitle> 
       <telerik:ChartTitle Content="PLM Concerns By Business Unit" HorizontalAlignment="Center"/>       
      </telerik:ChartDefaultView.ChartTitle> 
      <telerik:ChartDefaultView.ChartLegend> 
       <telerik:ChartLegend x:Name="ChartLegend" UseAutoGeneratedItems="True" Visibility="Collapsed"/> 
      </telerik:ChartDefaultView.ChartLegend>     
      <telerik:ChartDefaultView.ChartArea> 
       <telerik:ChartArea LegendName="ChartLegend" Name="BusinessChartArea"> 
        <telerik:ChartArea.AxisX> 
         <telerik:AxisX LabelRotationAngle="45"/> 
        </telerik:ChartArea.AxisX> 
        <i:Interaction.Triggers> 
         <i:EventTrigger EventName="ItemClick"> 
          <cmd:EventToCommand Command="{Binding LoadDetails}" CommandParameter="{Binding ?????? /> 
         </i:EventTrigger> 
        </i:Interaction.Triggers> 
       </telerik:ChartArea> 
      </telerik:ChartDefaultView.ChartArea> 
     </telerik:ChartDefaultView> 
    </telerik:RadChart.DefaultView> 
</telerik:RadChart> 

XAMLコマンドバインディング?

おかげ

フィル

答えて

0

は、あなたのニーズに合わせてPassEventArgsToCommand = "True" に設定作業をしていますか?

<i:EventTrigger EventName="ItemClick"> 
    <cmd:EventToCommand Command="{Binding LoadDetails}" PassEventArgsToCommand="True" /> 
</i:EventTrigger> 

あなたのViewModelが定義され、これまで、あなたの代わりにこのようなオブジェクトの動的なを使用してハンドラを使用することができますTelerikアセンブリへの参照を持ってしたくない場合は、次の例:

public void MyCommandHandler(dynamic args) { } 

私はこのトリックを使用してプロジェクトを「きれいに」保ちます。今では、何かを "Telerik"を参照することなく、argsで必要なものを呼び出すことができます。

関連する問題