c# - 如何制作switch语句wpf

标签 c# wpf xaml

我制作了一个包含datePickercomboBox 的应用程序。 comboBox 有一个从 0 到 5 的数字列表。当用户使用 comboBox 选择“1”时,我的 datePickerdpkClaim1"将被启用,但我的其余 datePickers 将被禁用。如果用户选择 2 dpkClaim1dpkClaim2 都将被启用 如果用户选择 3 dpkClaim1 dpkClaim2 dpkClaim3 将被启用等等。我想知道是否可以使用 switch 而不是一系列 if 语句来提供更简洁的代码。

我的代码是休闲的

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;
    }

最佳答案

在组合框的 onchanged 事件中你想做这样的事情:

switch (combobox.SelectedItem) {
    case "1":
        datebox1.IsEnabled = true;
        break;
    case "2":
        datebox1.IsEnabled = true;
        datebox2.IsEnabled = true;
        break;
    default:
        //what you want when nothing is selected
        break;
}

关于c# - 如何制作switch语句wpf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38616102/

相关文章:

windows-phone-7 - ToggleSwitch 标题颜色

c# - 值不在 WriteableBitmap 异常范围内

c# - WindowsIdentity - 组和声明之间的差异

c# - 使用 .Net HttpListener 的多线程

c# - 创建类型为 "derived class"的对象

.net - 为什么在绑定(bind)到它时没有设置我的依赖属性?

c# - 如何在 C#.Net 中移动表单?

wpf - 如何将列表框选定项作为按钮中的命令参数传递?

ASP.Net 还是 WPF (C#)?

wpf - 如何将 ViewModel 变量用于 DynamicResource?