2017-10-17 13 views
0

内部のバインディングチャートだから私は私のComboBoxChartをバインドしたい:コンボボックス

XAML: 

<ComboBox x:Name="cbAdapters" SelectedIndex="0" Margin="30"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <telerik:RadCartesianChart x:Name="chartTemplate" 
             Width="300" Height="200"> 
       <telerik:RadCartesianChart.VerticalAxis> 
        <telerik:LinearAxis /> 
       </telerik:RadCartesianChart.VerticalAxis> 
       <telerik:RadCartesianChart.HorizontalAxis> 
        <telerik:CategoricalAxis/> 
       </telerik:RadCartesianChart.HorizontalAxis> 
       <telerik:LineSeries ValueBinding="Rate" CategoryBinding="Category" ItemsSource="{Binding ChartPlotInfos}" /> 
      </telerik:RadCartesianChart> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

Code behind

public MainWindow() 
{ 
    InitializeComponent(); 

    var r = new Random(); 
    var comboBoxSource = new ObservableCollection<MachineNetworkAdapter>(); 
    for (int i = 0; i < 3; i++) 
    { 
     var adapter = new MachineNetworkAdapter() 
     { 
      Name = "Adapter " + i, 
      IpAddress = r.Next(0, 255) + "." + r.Next(0, 255) + "." + r.Next(0, 255) + "." + r.Next(0, 255), 
      ChartPlotInfos = new ObservableCollection<ChartPlotInfo>(), 
     }; 

     for (int k = 0; k < 10; k++) 
     { 
      adapter.ChartPlotInfos.Add(new ChartPlotInfo() { Category = "Category " + k, Rate = r.Next(100, 300) }); 
     } 

     comboBoxSource.Add(adapter); 
    } 

    cbAdapters.ItemsSource = comboBoxSource; 
} 

}

モデル:

public class MachineNetworkAdapter 
{ 
    public string Name { get; set; } 
    public string IpAddress { get; set; } 
    public ObservableCollection<ChartPlotInfo> ChartPlotInfos { get; set; } 
} 

public class ChartPlotInfo 
{ 
    public double Rate { get; set; } 
    public string Category { get; set; } 
} 

これは私の内部ComboBox私だけが見ることができますが、私のMachineNetworkAdapterNameIP Addressが表示されないことを除いてこれはうまく動作しますので、私はChartを見ることができます。

+0

'DataTemplate'では、' Name'と 'IpAddress'のバインディングを設定していません。 – Iron

答えて

0

NameIpAddressを表示するには、2つのコントロールを配置する必要があります。また、バインディングを設定することを忘れないでください。

<ComboBox x:Name="cbAdapters" SelectedIndex="0" Margin="30"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock Text="{Binding Name}"/> 
       <TextBlcok Text="{Binding IpAddress}"/> 
       <telerik:RadCartesianChart x:Name="chartTemplate" Width="300" Height="200"> 
        <telerik:RadCartesianChart.VerticalAxis> 
         <telerik:LinearAxis /> 
        </telerik:RadCartesianChart.VerticalAxis> 
        <telerik:RadCartesianChart.HorizontalAxis> 
         <telerik:CategoricalAxis/> 
        </telerik:RadCartesianChart.HorizontalAxis> 
        <telerik:LineSeries ValueBinding="Rate" CategoryBinding="Category" ItemsSource="{Binding ChartPlotInfos}" /> 
       </telerik:RadCartesianChart> 
      </StackPanel> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox>