2011-06-21 11 views
0

我有一個Telerik Silverlight RadChart,我想捕獲ItemClick事件,當使用單擊其中一個酒吧並使用MVVMLight RelayCommand將底層值傳遞給ViewModel時。Silverlight Telerik Chart單擊事件值作爲命令參數

我遇到的問題是我不知道如何將值傳遞給CommandParameter。

XAML

<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> 

我可以捕捉在後面的代碼的事件,而是寧願做任務declaritively

代碼隱藏

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 

在如何做到這一點的任何想法命令綁定?

感謝

菲爾

回答

0

是否設置PassEventArgsToCommand = 「真」 的工作爲您的需求?例如:

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

如果你不希望有Telerik的該組件的引用在以往任何時候你的視圖模型的定義,您可以使用,而不是像這樣的對象動態使用的處理程序:

public void MyCommandHandler(dynamic args) { } 

我使用這個技巧來保持我的項目「乾淨」。現在,您可以根據參數調用所需的任何內容,而無需引用任何「Telerik」。