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>
C#.NET Programming

Avatar of undefined
Last Comment
countrymeister

8/22/2022 - Mon
David Johnson, CD

no points: I put your code into code blocks Use Code Blocks to make your code easier for othes

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
countrymeister

Log in or sign up to see answer
Become an EE member today7-DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform
Sign up - Free for 7 days
or
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.
See how we're fighting big data
Not exactly the question you had in mind?
Sign up for an EE membership and get your own personalized solution. With an EE membership, you can ask unlimited troubleshooting, research, or opinion questions.
ask a question
ASKER
countrymeister

No one looked into this issue. Very disappointed with th experts.
I eventually found a way to do this
Experts Exchange has (a) saved my job multiple times, (b) saved me hours, days, and even weeks of work, and often (c) makes me look like a superhero! This place is MAGIC!
Walt Forbes