簡體   English   中英

ComboBox.SelectedItem綁定

[英]ComboBox.SelectedItem binding

我的DataGrid中有以下列/代碼:

<sdk:DataGridTemplateColumn CanUserReorder="True" CanUserResize="True" CanUserSort="True" Width="Auto" Header="Province/State">
                    <sdk:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Path=SelectedProvince.ProvinceName, Mode=OneWay}"/>
                        </DataTemplate>
                    </sdk:DataGridTemplateColumn.CellTemplate>
                    <sdk:DataG  ridTemplateColumn.CellEditingTemplate>                        
                        <DataTemplate>
                            <ComboBox ItemsSource="{Binding Path=ProvinceList, Mode=TwoWay}"
                                      SelectedItem="{Binding Path=SelectedProvince, Mode=TwoWay}"
                                      DisplayMemberPath="ProvinceName" />
                        </DataTemplate>
                    </sdk:DataGridTemplateColumn.CellEditingTemplate>
                </sdk:DataGridTemplateColumn>

然后這是背后的代碼(我已經剪掉了不相關的代碼):

            public class BatchSeedingAddressVM : ViewModelBase
            {
                public BatchSeedingAddressVM()
                {
                    _saveAddressButtonCommand = new RelayCommand(SaveAddressButtonCommand_OnExecute);

                    CreateJurisdictionList();
                }

                public BatchSeedingAddressVM(int? batchSeedingAddressOID, string address1, string address2, string city, string postalCode, string province2Code)
                {
                    _saveAddressButtonCommand = new RelayCommand(SaveAddressButtonCommand_OnExecute);
                    CreateJurisdictionList();

                    BatchSeedingAddressOID = batchSeedingAddressOID;
                    Address1 = address1;
                    Address2 = address2;
                    City = city;
                    PostalCode = postalCode;
                    //SelectedProvince2Code = province2Code;
                    SelectedProvince = _provinceList.Where(x => x.Province2Code == province2Code).FirstOrDefault();
                }


                private ObservableCollection<Province> _provinceList = new ObservableCollection<Province>();
                public ObservableCollection<Province> ProvinceList
                {
                    get
                    {
                        return _provinceList;
                    }
                    set
                    {
                        if (_provinceList != value)
                        {
                            _provinceList = value;
                            RaisePropertyChanged("ProvinceList");
                        }
                    }
                }

        private Province _selectedProvince;
        [Display(Name = "Province")]
        public Province SelectedProvince
        {
            get
            {
                return _selectedProvince;
            }
            set
            {
                if (_selectedProvince != value && value != null)
                {
                    _selectedProvince = value;                            
                    RaisePropertyChanged("SelectedProvince");                        
                }
            }
        }
        }

這是問題所在:DataGrid單元具有2個模板:CellTemplate和CellEditingTemplate。 當CellTemplate處於活動狀態時,其中的文本框將按計划選擇SelectedProvince,並顯示省名。 問題在於,當CellEditingTemplate變為活動狀態時,其中的ComboBox不會拾取(默認)SelectedItem值並顯示一個空框。

我有什么想念的嗎? 如何設置綁定,以便可以在CellEditingTemplate的組合框中設置默認的SelectedItem?

在此先感謝!

我認為用於ItemsSource的TwoWay綁定可能是問題。

ItemsSource="{Binding Path=ProvinceList, Mode=TwoWay}"

我建議根據您的設計將其更改為OneTimeOneWay

我可能是錯的,但是我認為如果您使用的是SelectedValuePath ,則需要使用SelectedValue而不是SelectedItem ,因此請更改以下內容:

SelectedItem="{Binding Path=SelectedProvince, Mode=TwoWay}"

對此:

SelectedValue="{Binding Path=SelectedProvince, Mode=TwoWay}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM