2009-07-28 2 views
4

У меня есть ComboBox с пол (мужской, женский ..): И я требую от пользователя, чтобы выбрать значение (ComboBox не имеет значения по умолчанию.)WPF выпадающий проверки

<ComboBox ItemsSource="{x:Static Member=data:Sex.AllTypes}" SelectedItem="{Binding Path=Sex.Value, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged, NotifyOnValidationError=True}" VerticalAlignment="Top"> 
     <ComboBox.ItemTemplate> 
      <DataTemplate> 
        <StackPanel Orientation="Horizontal"> 
         <TextBlock Text="{Binding Path=Name}" /> 
        </StackPanel> 
      </DataTemplate> 
     </ComboBox.ItemTemplate> 
</ComboBox> 

Sex.Value является a Объект в моем лице:

public class Person : IDataErrorInfo 
{ 
public string this[string columnName] 
     { 
      get 
      {     
       switch (columnName) 
       {     
        case "Sex": return Sex.Value == null ? "Required field" : null; 
        case "Surname": return string.IsNullOrEmpty(Nachname) ? "Required field" : null; 
       }     
      } 
     } 
public string Error 
     { 
      get 
      { 
       return null; 
      } 
     } 
} 

Проблема в том, что она никогда не входит в это [имя столбца строки].

Когда я попробовать TextBox с именем, он входит в эту [строку ColumnName] и все работает отлично:

<TextBox Style="{StaticResource textBoxInError}" Text="{Binding Path=Surname, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged, NotifyOnValidationError=True}"/> 

ответ

0

Хороший способ в окнах, чтобы добавить значение (нет) в выпадающий список и тест, если человек содержит значение (нет). «(Нет)» является мета-опцией, потому что это неверное значение для выбора, а скорее описывает, что сама опция не используется.

Правильно: alt text http://i.msdn.microsoft.com/Aa511458.DropDownLists41(en-us,MSDN.10).png

Неправильно: alt text http://i.msdn.microsoft.com/Aa511458.DropDownLists40(en-us,MSDN.10).png

Проверка не работает в вашем случае, поскольку значение не выбрано, когда вы хотите сказать, что не выбран ни один секс ...

0

Я решил сделать это таким образом:

Когда пользователь нажимает кнопку Сохранить , произошла ошибка . Затем я просто проверяю событие проверки, если SelectedValue имеет значение NULL. Если это так, значит, пользователь не выбрал ни одного из элементов. Тогда я предупреждаю его об этом факте.

private void CanSave(object sender, CanExecuteRoutedEventArgs e) 
{ 
    e.CanExecute = myComboBox.SelectedValue != null; 
} 
Смежные вопросы