Привязка WPF ComboBox из сложного элемента ItemSource должна была выбрать поле IsSelect для внутреннего элемента

using System.Windows;
using System.Windows.Controls;



namespace Dummy.ModelAndViewModel
{
    using System.ComponentModel;
    using System.Collections.Generic;
    using System;
    using System.Collections.ObjectModel;

    public class Model
    {
        public class Choice : Question
        {
            private bool _IsSelect = false;
            private string _ChoiceText;
            public int ChoiceId { get; set; }
            public String ChoiceText { get; set; }
            public bool IsSelect
            {
                get
                {
                    return _IsSelect;
                }
                set
                {
                    _IsSelect = value;
                    base.OnPropertyChanged("IsSelect");
                }
            }
        }
        public class Question : INotifyPropertyChanged
        {
            public int SurveyId { get; set; }
            public int QuestionId { get; set; }
            public string QuestionText { get; set; }
            public bool MustAnswer { get; set; }

            public bool IsActive { get; set; }

            public AnswerTypes AnswerType { get; set; }

            public List<Choice> QuestionChoices { get; set; }

            public event PropertyChangedEventHandler PropertyChanged;
            protected void OnPropertyChanged(string propertyName)
            {
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
                }
            }

        }
    }
    public class DummyViewModel
    {

        private ObservableCollection<Model.Question> _Questions = new
            ObservableCollection<Model.Question>();
        public DummyViewModel()
        {
            _Questions = FillQuestionForSurvey(1);
        }
        public ObservableCollection<Model.Question> FillQuestionForSurvey(int surveyId)
        {
            ObservableCollection<Model.Question> result = new ObservableCollection<Model.Question>();
            int quesId = 0;
            Model.Question qs = new Model.Question()
            {
                SurveyId = surveyId,
                QuestionId = ++quesId,
                QuestionText = "Select your Favorite Fruit in Combo",
                MustAnswer = true,
                IsActive = true,
                AnswerType = AnswerTypes.SingleSelectFromCombo,
                QuestionChoices = new List<Model.Choice>()
                                { new Model.Choice() {ChoiceId = 1, QuestionId = quesId, ChoiceText = "Apple"},
                                  new Model.Choice() {ChoiceId = 2, QuestionId = quesId, ChoiceText = "Orange" },
                                }
            };
            result.Add(qs);
            return result;
        }
    }
}


namespace Dummy
{
    using System.Windows;
    using System.Windows.Controls;
    using Dummy.ModelAndViewModel;

    public enum AnswerTypes { SingleLineText = 1, MultiLineText = 2, SingleTextAsNumber = 3, SingleTextAsDateAndTime = 4, SingleSelectFromCombo = 5, MultiSelectAsCheckBox = 6, SingleSelectAsRadio = 8 };

    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class wndDummy : Window
    {
        DummyViewModel VM = new DummyViewModel();
        public wndDummy()
        {
            DataContext = VM;
            InitializeComponent();
            Style = (Style)FindResource(typeof(Window));
            VirtualizingStackPanel.SetIsVirtualizing(lvQuestions, false);
            VirtualizingStackPanel.SetVirtualizationMode(lvQuestions, VirtualizationMode.Standard);
        }
    }
}

Теперь проблема в том, когда я использую ItemSource of Choice Choice

<DataTemplate x:Key="SingleSelectCombo" >
 <ComboBox  Padding="5,0,20,0" 
            ItemsSource="{Binding QuestionChoices, Mode=TwoWay}" 
            DisplayMemberPath="ChoiceText" />
 </DataTemplate>

Я хочу установить isSelect as True на выбранный текст, это минимум, который я хочу сделать, я пробовал различные методы со свойством multibind, setter, но ничего не работало для сценария со сложным элементом

Все остальные условия для Radio, CheckBox Я могу установить isSelectProperty с той же моделью и ViewModel, но не для комбо. Любая помощь будет высоко оценена. Работать с Radio button легко, я тоже уже пытался обойти это

<DataTemplate>
     <RadioButton Name="RdoBtn" GroupName="{Binding QuestionId}" 
                                 Content  ="{Binding ChoiceText}"
                                 IsChecked="{Binding IsSelect, 
  Mode=TwoWay}"/>
</DataTemplate>

0 ответов

Другие вопросы по тегам