Как связать линейные графики с полем со списком в Silverlight? - PullRequest
1 голос
/ 19 февраля 2012

Я использую 2 разных ряда линий на графике в приложении silverlgiht

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

Пожалуйста, предложите Как я могу использовать поле со списком, чтобы выбрать серию линий для отображения на графике?

Спасибо

1 Ответ

1 голос
/ 19 февраля 2012

В вашем коде для события 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;
            }
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...