Combo box zmiana stanu

1

Witam,
Nie wiem jak w czasie rzeczywistym sprawdzać czy zmieniła się wartość comboboxa.
Chcę zrobić tak że gdy wybiorę jakąś wartość powiedzmy w

 ComboBox1

pojawią się wartości w kolejnym(Wartości w ComboBox2

 są zależne od <code class="csharp"> ComboBox1

), bez żadnego przycisku, pytanie jak to zrobić? Użyć Timera który będzie monitorował zmiany wyboru wartości? Czy jest jakiś inny sposób?

edit:

Może to będzie lepiej wyjaśnić na przykładzie:
Wybieram w ComboBox1 rok >= od aktualnego
wtedy w ComboBox2 mam wartości miesięcy które pozostały do końca roku czyli w tym przypadku 5,6,7,...,12
i dalej w ComboBox3 wybieram dni w miesiącu, tak samo jak wyżej nie mogą być wstecz czyli jeśli wybrałem 2013>5 to mam 19,20,...

0

Nie wiem czy dobrze Cię rozumiem, ale mając

ComboBox

  • value1
  • value 2
  • value 3

chcesz się dowiedzieć czy po jakiejś akcji ComboBox ma nową wartość? W takim razie najpierw trzeba rozpocząć aktualizacje, przypisać do niego nulla, potem źródło danych i zakończyć aktualizacje.

0

ComboBox1:
2013
2014
2015
.
.
.
W pozostałych ComboBoxach nie ma nic i jeżeli wybiorę w ComboBox1 wartość np. 2013 to wtedy w ComboBox2 dopiero pojawi się:
5
6
7

I tak samo dla ComboBox3

2

Dodaj do każdego comboboxa eventa "SelectionChanged" w którym po zaznaczeniu jakiejś wartości zaktualizuje o jakieś dane następny combobox;

0

No właśnie próbowałem, ale coś mi nie wychodziło, mógłbym prosić o jakiś przykładowy kod?

edit:
Ok mam już, dzięki za odpowiedź.

1

Tak czy siak wkleje:

 
public partial class MainWindow : Window
    {
        public ObservableCollection<string> literki { get; set; }
        public ObservableCollection<int> cyferki { get; set; }
        public string dsa;
        public MainWindow()
        {
            InitializeComponent();
            
            literki = new ObservableCollection<string>();
            cyferki = new ObservableCollection<int>();

            literki.Add("asd");
            literki.Add("dsa");
            literki.Add("zxc");
            literki.Add("qwe");

            cyferki.Add(123);
            cyferki.Add(111);
            cyferki.Add(222);
            cyferki.Add(333);

            box1.ItemsSource = new ObservableCollection<string> {"literki", "cyferki"};
        }

        private void box1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (box1.SelectedItem == "literki")
                box2.ItemsSource = literki;
            else
                box2.ItemsSource = cyferki;
        }
        private void box2_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            box3.ItemsSource = new string[] { "wybrales " + box2.SelectedItem };
        }
        private void box3_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {

        }
    }
<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    
    <Grid>
        <ComboBox x:Name="box1" SelectionChanged="box1_SelectionChanged" Margin="0,21,390,255" />
        <ComboBox x:Name="box2" SelectionChanged="box2_SelectionChanged"  Height="33" HorizontalAlignment="Left" Margin="0,70,0,0" VerticalAlignment="Top" Width="113" />
        <ComboBox x:Name="box3" SelectionChanged="box3_SelectionChanged" Height="33" HorizontalAlignment="Left" Margin="0,120,0,0" VerticalAlignment="Top" Width="113" />
    </Grid>
</Window>

1 użytkowników online, w tym zalogowanych: 0, gości: 1