2015-01-16 3 views
0

У меня есть несколько столбцов combobox. После комбо-популяции я пытаюсь установить значения по умолчанию, но я получаю это сообщение об ошибкеКак установить значения по умолчанию в многоколоночных модулях ComboBox?

Ссылка на объект не установлена ​​в экземпляр объекта.

Это мой код

недвижимости

public ObservableCollection<Model_Sedi> Sedi { get; set; } 
private Model_Sedi _Sedi_Search; 
public Model_Sedi Sedi_Search { 
get { return _Sedi_Search; } 
set { 
    _Sedi_Search = value; 
    OnPropertyChanged("Sedi_Search"); 
    } 
    } 

это XAML

<ComboBox x:Name="Cmb_Sede"      
     ItemsSource="{Binding Sedi, Mode=TwoWay}" 
         SelectedValuePath="Value" 
         SelectedItem="{Binding Sedi_Search, Mode=TwoWay}" 

         VerticalAlignment="Top" Width="189"> 
     <ComboBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <TextBlock Text="{Binding IdSede, UpdateSourceTrigger=PropertyChanged}"></TextBlock> 
        <TextBlock Text="{Binding Sede, UpdateSourceTrigger=PropertyChanged}" Padding="10,0,0,0"></TextBlock> 
       </StackPanel> 
      </DataTemplate> 
     </ComboBox.ItemTemplate> 
     <ComboBox.Effect> 
      <DropShadowEffect Color="#FF0A0A0A" Opacity="0.6"/> 
     </ComboBox.Effect> 
    </ComboBox> 

Теперь, как я могу установить значения по умолчанию? (Как это не работает)

Sedi_Search.Sede = "ABC" 
Sedi_Search.IdSede = 111 
+0

Пожалуйста, не кричите заглавными буквами; это профессиональный сайт Q & A, а не детский сад. Кроме того, слово, которое вы ищете, это «default», записанное с помощью «t» в конце. –

+0

Большое спасибо за ваше ценное наблюдение. – Alan392

ответ

0

Вы должны установить Sedi_Search свойство для соответствующего объекта из Sedi коллекции. Просто используйте LINQ для этого:

Sedi_Search = Sedi.SingleOrDefault(x => x.Sede == "ABC" && x.InSede == 111); 

Другой способ написания этого:

Func<Model_Sedi, bool> isMatch = delegate(Model_Sedi x) 
{ 
    return x.Sede == "ABC" && x.InSede == 111; 
}; 

Sedi_Search = Sedi.SingleOrDefault(isMatch); 

Первая версия это просто сокращенная версия второго. x - это просто имя переменной, используемое выражением делегата/лямбда. Этот вопрос может оказаться полезным: Linq and lambda expression.

+0

Привет, Стивен .. но wath's "x" ?? – Alan392

+0

'x' - это просто имя переменной, используемое выражением лямбда. См. Изменение в моем ответе для уточнения. –

0

Изменение SelectedValuePath="IdSede" в XAML и в виде модели вы должны делать то, что Steven Rands is saying.

+0

Я изменил SelectedValuePath с помощью «IdSede», используя LINQ, но Sedi_Search всегда ничего. – Alan392

+0

@ Alan392: И делайте то, что говорит Стивен. –

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