Link to home
Start Free TrialLog in
Avatar of countrymeister
countrymeister

asked on

ComboBox selected value using MVVM not showing in the display

I have a ComboBox displaying a checkbox and some text.
The combox is bound to a class called SecurityType which has two properties. SecType and IsSelected.

When I select one or more rows I need to get the value of the items selected in the combobox display, instead I see the class bound to the combobox.
The user can select one or more items.

Here is my code


   Model
       public class SecurityType : NotificationObject
    {
     
        public SecurityType(string secType, bool isSelected)
        {
            SecType = secType;          
            IsSelected = isSelected;
         
         
        }
 

        private string _secType;
        public string SecType
        {
            get { return _secType; }
            set
            {
                if (_secType != value)
                {
                    _secType = value;
                    RaisePropertyChanged(() => SecType);
                }
            }
        }

     

        private bool _isSelected;
        public bool IsSelected
        {
            get { return _isSelected; }
            set
            {
                if (_isSelected != value)
                {
                    _isSelected = value;
                    RaisePropertyChanged(() => IsSelected);
                }
            }
        }

    }
   
   
   
   ViewModel
      public class SecurityViewModel : BaseViewModel
    {
        private ObservableCollection<SecurityType> _securitytypeCollection;
        public ObservableCollection<SecurityType> SecurityTypeCollection
        {
            get { return _securitytypeCollection; }
            set
            {
                if (_securitytypeCollection != value)
                {
                    _securitytypeCollection = value;
                    RaisePropertyChanged(() => SecurityTypeCollection);
                }
            }
        }
        SecurityType _selectedSecurityType;
        public SecurityType SelectedSecurityType
        {
            get
            {
                return _selectedSecurityType;
            }
            set
            {
                _selectedSecurityType = value;
                //RaisePropertyChanged(() => SelectedSecurityType);        
               
            }
        }
        public SecurityViewModel()
        {
           GetData();
        }            
      
      XAML
      
      <c1:C1ComboBox Grid.Row="0" Grid.Column="1"  SelectedItem="{Binding SelectedSecurityType, Mode=TwoWay}"  SelectedValuePath="SecType"   ItemsSource="{Binding SecurityTypeCollection}"  >
                                   
                                    <c1:C1ComboBox.ItemTemplate>
                                        <DataTemplate >
                                            <StackPanel Orientation="Horizontal">
                                                <CheckBox IsChecked="{Binding IsSelected}"
                                                        Width="20" />
                                                <TextBlock Text="{Binding SecType}"
                                                         Width="100" />
                                            </StackPanel>
                                        </DataTemplate>
                                    </c1:C1ComboBox.ItemTemplate>
                                </c1:C1ComboBox>
Avatar of David Johnson, CD
David Johnson, CD
Flag of Canada image

no points: I put your code into code blocks User generated image

Model
 public class SecurityType : NotificationObject
    {
     
        public SecurityType(string secType, bool isSelected)
        {
            SecType = secType;          
            IsSelected = isSelected;
         
         
        }
 

        private string _secType;
        public string SecType
        {
            get { return _secType; }
            set
            {
                if (_secType != value)
                {
                    _secType = value;
                    RaisePropertyChanged(() => SecType);
                }
            }
        }

     

        private bool _isSelected;
        public bool IsSelected
        {
            get { return _isSelected; }
            set
            {
                if (_isSelected != value)
                {
                    _isSelected = value;
                    RaisePropertyChanged(() => IsSelected);
                }
            }
        }

    }

Open in new window


ViewModel

 public class SecurityViewModel : BaseViewModel
    {
        private ObservableCollection<SecurityType> _securitytypeCollection;
        public ObservableCollection<SecurityType> SecurityTypeCollection
        {
            get { return _securitytypeCollection; }
            set
            {
                if (_securitytypeCollection != value)
                {
                    _securitytypeCollection = value;
                    RaisePropertyChanged(() => SecurityTypeCollection);
                }
            }
        }
        SecurityType _selectedSecurityType;
        public SecurityType SelectedSecurityType
        {
            get
            {
                return _selectedSecurityType;
            }
            set
            {
                _selectedSecurityType = value;
                //RaisePropertyChanged(() => SelectedSecurityType);        
               
            }
        }
        public SecurityViewModel()
        {
           GetData();
        }    

Open in new window

Xaml
<c1:C1ComboBox Grid.Row="0" Grid.Column="1"  SelectedItem="{Binding SelectedSecurityType, Mode=TwoWay}"  SelectedValuePath="SecType"   ItemsSource="{Binding SecurityTypeCollection}"  >
                                   
                                    <c1:C1ComboBox.ItemTemplate>
                                        <DataTemplate >
                                            <StackPanel Orientation="Horizontal">
                                                <CheckBox IsChecked="{Binding IsSelected}"
                                                        Width="20" />
                                                <TextBlock Text="{Binding SecType}"
                                                         Width="100" />
                                            </StackPanel>
                                        </DataTemplate>
                                    </c1:C1ComboBox.ItemTemplate>
                                </c1:C1ComboBox> 

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of countrymeister
countrymeister

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of countrymeister
countrymeister

ASKER

No one looked into this issue. Very disappointed with th experts.
I eventually found a way to do this