如何将线图与Silverlight中的组合框绑定?

时间:2012-02-19 14:04:09

标签: c# wpf silverlight xaml

我在silverlgiht应用程序中使用2个不同的系列图表

<toolkit:Chart Grid.Column="1"  Grid.Row="2" Height="300" Width="450" HorizontalAlignment="Left"  Name="FarmCondtion" Title="Farm Condition" VerticalAlignment="Top" > 
    <toolkit:LineSeries x:Name="TempLine" Visibility="Visible" Title="Temprature" IndependentValueBinding="{Binding Date}" 
                                                DependentValueBinding="{Binding Temp}" ItemsSource="{Binding }"/>
    <toolkit:LineSeries x:Name="MoistureLine" Visibility="Collapsed" Title="Moisture" IndependentValueBinding="{Binding Date}" 
                                                DependentValueBinding="{Binding Moist}" ItemsSource="{Binding }"/>
</toolkit:Chart>

我正在使用一个组合框:

<ComboBox x:Name="FarmCombo" SelectionChanged="FarmCombo_SelectionChanged">
            <ComboBox.Items >
                <ComboBoxItem Content="Temprature"></ComboBoxItem>
                <ComboBoxItem Content="Moisture"></ComboBoxItem>
            </ComboBox.Items>
</ComboBox>

我想创建一个事件FarmCombo_SelectionChanged,其中我只想显示在组合框中选中的图表行系列。

我将此事件用作:

private void FarmCombo_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
            string selectedItem = FarmCombo.Items[FarmCombo.SelectedIndex].ToString();
            if (selectedItem == "Temprature")
            {
                TempLine.Visibility.Equals("Visible");
                MoistureLine.Visibility.Equals("Collapsed");
            }
            else if (selectedItem  == "Moisture")
            {
                MoistureLine.Visibility.Equals("Visible");
                TempLine.Visibility.Equals("Collapsed");
            }
}

但是代码对Line Series的可见性没有任何影响。

请建议我如何使用组合框选择要在图表中显示的线系列?

由于

1 个答案:

答案 0 :(得分:1)

在SelectionChanged事件的代码中,您实际上从未设置过系列的可见性。所有MoistureLine.Visibility.Equals("Visible");都返回一个布尔值,表示Visiblity是否可见,它实际上并没有设置属性。

此外,SelectionChangedEventArgs包含已选择的值,因此您无需引用组合框本身来获取此信息。

以下代码应与您正在寻找的内容更加一致:

private void FarmCombo_SelectionChanged(object sender, SelectionChangedEventArgs e)
{          
       if(e.AddedItems.Count == 1)
       {
            string selectedItem = e.AddedItems[0].ToString();

            if (selectedItem == "Temprature")
            {
                TempLine.Visibility = Visibility.Visible;
                MoistureLine.Visibility = Visibility.Collapsed;
            }
            else if (selectedItem  == "Moisture")
            {
                MoistureLine.Visibility = Visibility.Visible;
                TempLine.Visibility = Visibility.Collapsed;
            }
        }
}