2016-07-26 113 views
1

我已经提出了一个由datePickercomboBox组成的应用程序。 comboBox有一个范围从0到5的数字列表。当用户选择“1”时,我希望启用我的datePicker,但如果用户选择了其他任何我想要的datePicker被禁用。但由于某些原因,此代码不起作用,并且datePicker始终处于禁用状态。如何使用“if语句”禁用日期选择器wpf

我的代码休耕

XAML

<ComboBox x:Name="cbxNoClaims" Loaded="cbxNoClaims_Loaded" Grid.Row="13" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Top" Width="120"/> 
<DatePicker Name="dpkClaim1" Loaded="dpkClaim1_Loaded" Grid.Row="13" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Top"/> 

MainWindow.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 dpkClaim1_Loaded(object sender, RoutedEventArgs e) 
{ 
    DatePicker datePicker = sender as DatePicker; 
    if ((string)cbxNoClaims.Item== "1") 
    { 
     dpkClaim1.IsEnabled = true; 

    } 
    else dpkClaim1.IsEnabled = false; 

} 
+0

“'SelectedItem'似乎并没有工作,要么 –

回答

3

使用在组合框中选择更改事件。

XAML:

<ComboBox x:Name="cbxNoClaims" SelectionChanged="cbxNoClaims_SelectionChanged" Grid.Row="13" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Top" Width="120"/> 

代码:

private void cbxNoClaims_SelectionChanged(object sender, RoutedEventArgs e) 
{ 
    if (cbxNoClaims.SelectedItem.ToString() == "1") 
    { 
     dpkClaim1.IsEnabled = true; 
    } 
    else 
    { 
     dpkClaim1.IsEnabled = false; 
    } 
} 
+1

你甚至都不需要'sender'没有你怎么写的。 :) – Donnie

+0

现在应该读得更好@Donnie –

+0

这工作感谢球员:) –