JimB_ Ответов: 1

Wpf xaml, когда я нажимаю кнопку Изменить, проверяет, является ли значение combobox нулевым или нет. Как отключить combobox, если значение не равно null


private CarType _inspectMethod;
    
    public CarType InspectMethod
    {
    
            get
            {
                return _inspectMethod;
            }
            set
            {
     
                _inspectMethod= value;
                RaisePropertyChanged();
                
             if(InspectMethod!= null)
                {                    
                    InspectTypelist = InspectMethod.InspectType;
                }
    }   

    <Label Grid.Row="0" Grid.Column="0" Content="value:" />
   <ComboBox Width="Auto" Grid.Row="4" Grid.Column="1" SelectedValuePath="Id" 
    DisplayMemberPath="Name" SelectedItem="{ Binding ElementName=LayoutRoot, 
    Path=DataContext.InspectMethod}" ItemsSource="{ Binding 
    ElementName=LayoutRoot, Path=DataContext.InspectMethodList}"/>


Что я уже пробовал:

bool _isEnable;
 public bool IsEnable

        {
            get
            {
                return this._isEnable;
            }

            set
            {
                this._isEnable = value;
            }
        }

 <ComboBox Width="Auto" Grid.Row="4" Grid.Column="1" IsEnable="Binding something here" SelectedValuePath="Id" 
    DisplayMemberPath="Name" SelectedItem="{ Binding ElementName=LayoutRoot, 
    Path=DataContext.InspectMethod}" ItemsSource="{ Binding 
    ElementName=LayoutRoot, Path=DataContext.InspectMethodList}"/>

1 Ответов

Рейтинг:
11

M.Kamran Asim

Что вы подразумеваете под значением combobox? ты имеешь ввиду включить-отключить поле со списком и список предметов. Если это так, то вы можете использовать следующий код

public class ComboBoxEnableConverter : IValueConverter
   {
       public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
       {
           bool hasItem = (bool)value;
           if (hasItem)
               return true;
           return false;
       }
       public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
       {
           throw new NotImplementedException();
       }
   }


Затем добавить в ресурс и привязать к позволяют имущество, как указано ниже

<UserControl.Resources>
        <common:ComboBoxEnableConverter x:Key="EnableConverter"/>
</UserControl.Resources>

<ComboBox x:Name="cmboBox" IsEnabled="{Binding ElementName=cmboBox, Path=HasItems, Converter={StaticResource EnableConverter}}"/>



1. Определите конвертер, если вы хотите преобразовать исходное значение в целевое, например количество элементов в boolean (IsEnable on accepts boolean)
2. Привязать свойство IsEnable вашему требованию. В этом примере я хочу проверить, есть ли в поле со списком некоторые элементы в источнике элементов. если да, то конвертер вернет true, иначе false