如何将折线图与组合框绑定在silverlight中

本文关键字:绑定 silverlight 组合 折线图 | 更新日期: 2023-09-27 18:25:02

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

<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的可见性没有任何影响。

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

感谢

如何将折线图与组合框绑定在silverlight中

在SelectionChanged事件的代码中,您从未实际设置行序列的Visibility。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;
            }
        }
}