2016-09-30 5 views
0

Я работаю над приложением C#/WPF. Я вызываю метод ProcessServiceResponse() в MainViewModel одним нажатием кнопки. Выбранная стоимость недвижимости в стране правильно устанавливается в этом методе. В списке со списком стран также отображается список стран. Но почему-то я не вижу выбранного значения (например, SG) в раскрывающемся списке страны. Любые идеи относительно того, чего я здесь не хватает, пожалуйста? Сообщите мне, если вам нужны другие детали кода.Невозможно видеть выбранное значение в combobox

Спасибо.

Вот мой код.

MainWindow View: 

<Window 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:MainViewModel="clr-namespace:MyTool.ViewModels" 
     xmlns:ViewModel="clr-namespace:MyTool.ViewModel.Bonds" 
     xmlns:View="clr-namespace:MyTool" x:Class="MyTool.MainWindow" 
     Title="{Binding DisplayName, Mode=OneWay}" ResizeMode="CanMinimize" WindowStartupLocation="CenterScreen" Height="600" Width="1100"> 
    <Window.DataContext> 
     <MainViewModel:MainWindowViewModel/> 
    </Window.DataContext> 


<ComboBox Margin="1,0" ItemsSource="{Binding MyViewModel.CountryList,UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Description" SelectedValuePath="Code" SelectedItem="{Binding MyViewModel.SelectedCountry, Mode=TwoWay}" TabIndex="2" Grid.Row="7" Grid.Column="2" HorizontalAlignment="Left" Height="23" VerticalAlignment="Top" Width="180" /> 

MainViewModel: 

public MainWindowViewModel() 
{ 
    MyAttributes = new MyViewModel(); 

} 

public object MyAttributes 
     { 
      get { return m_myViewModel; } 
      set 
      { 
       m_myViewModel = value; 
       OnPropertyChanged("MyAttributes"); 
      } 
     } 

public void ProcessServiceResponse() 

{ 

     var destination = new MyViewModel();/ 
      Type destinationType = destination.GetType(); 

      PropertyInfo[] destinationTypePI = destinationType.GetProperties(); 

      string propertyName = string.Empty; 
      object propertyValue = null; 

      foreach (var pinfo in sourcePI) 
      { 
       propertyName = pinfo.Name.Trim(); 
       var matchingItem = destinationTypePI.ToList().Where(d => d.Name == propertyName); 
       if (matchingItem != null && matchingItem.Count() > 0) 
       { 
        propertyValue = pinfo.GetValue(serviceResponse.lst_DKSecurities[0]); 
        matchingItem.FirstOrDefault().SetValue(destination, propertyValue);      
       } 

      } 

      this.MyAttributes = destination; 

} 

MyViewModel: 

namespace MyTool.ViewModels; 
public class MyViewModel 
{ 

public MyViewModel 
{ 
this.CountryList = GetCountryList(); 
} 

public string SelectedCountry 
     { 
      get 
      { 
       return m_selectedCountry; 
      } 
      set 
      { 
       m_selectedCountry = value; 
      } 
     } 

} 

ответ

0

После заполнения CountryList, присвоить SELECTEDCOUNTRY элемент списка, который вы хотите отобразить:

CountryList = new ObservableCollection<string> {"A", "B", "C"}; 
     SelectedCountry = CountryList[0]; 

<ComboBox ItemsSource="{Binding CountryList, UpdateSourceTrigger=PropertyChanged}"   
       SelectedItem="{Binding SelectedCountry, Mode=TwoWay}" /> 
+0

Благодаря Rom для inputs.But я боюсь, что это не будет работать в качестве значения элемента списка, который я хотите отобразить, доступно только в методе ProcessServiceResponse() в моем MainViewModel. И вызывается список стран в конструкторе MyViewModel, который вызывается до вызова метода ProcessServiceResponse(). –

Смежные вопросы