Ich habe eine Anwendung gemacht, die aus einer datePicker
und einer comboBox
besteht. Die comboBox
hat eine Liste von Zahlen von 0 bis 5. Wenn der Benutzer wählt "1" mit der comboBox
mein datePicker
"dpkClaim1
" wird aktiviert, aber der Rest meiner datePickers
wird deaktiviert. Wenn der Benutzer 2 auswählt, werden sowohl dpkClaim1
als auch dpkClaim2
aktiviert, wenn der Benutzer 3 dpkClaim1
dpkClaim2
dpkClaim3
aktiviert und so weiter aktiviert. Ich frage mich, ob ich einen Schalter statt einer Reihe von if-Anweisungen verwenden könnte, um saubereren Code zu liefern.Wie man eine switch-Anweisung macht wpf
Mein Code ist wie Brachen
XAML
<ComboBox x:Name="cbxNoClaims" SelectionChanged="cbxNoClaims_SelectionChanged" Loaded="cbxNoClaims_Loaded" Grid.Row="13" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Top" Width="120"/>
<DatePicker Name="dpkClaim1" Grid.Row="13" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<DatePicker Name="dpkClaim2" Grid.Row="14" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<DatePicker Name="dpkClaim3" Grid.Row="15" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<DatePicker Name="dpkClaim4" Grid.Row="16" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Top"/>
xaml.cs
private void cbxNoClaims_Loaded(object sender, RoutedEventArgs e)
{
// ... A List.
List<string> claim = new List<string>();
claim.Add("0 ");
claim.Add("1");
claim.Add("2");
claim.Add("3");
claim.Add("4");
claim.Add("5");
// ... Get the ComboBox reference.
var comboBox = sender as ComboBox;
// ... Assign the ItemsSource to the List.
comboBox.ItemsSource = claim;
comboBox.SelectedIndex = 0;
}
private void cbxNoClaims_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (cbxNoClaims.SelectedItem.ToString() == "1")
{
dpkClaim1.IsEnabled = true;
}
else
{
dpkClaim1.IsEnabled = false;
dpkClaim2.IsEnabled = false;
}
if (cbxNoClaims.SelectedItem.ToString() == "2")
{
dpkClaim1.IsEnabled = true;
dpkClaim2.IsEnabled = true;
}
else
{
dpkClaim2.IsEnabled = false;
}
if (cbxNoClaims.SelectedItem.ToString() == "3")
{
dpkClaim1.IsEnabled = true;
dpkClaim2.IsEnabled = true;
dpkClaim3.IsEnabled = true;
}
else
{
dpkClaim3.IsEnabled = false;
}
if (cbxNoClaims.SelectedItem.ToString() == "4")
{
dpkClaim1.IsEnabled = true;
dpkClaim2.IsEnabled = true;
dpkClaim3.IsEnabled = true;
dpkClaim4.IsEnabled = true;
}
else
{
dpkClaim4.IsEnabled = false;
}