2016-10-28 1 views
1

У меня есть 4 элемента списка, которые содержат элементы флажка. Я пытаюсь связать их с тем же набором данных, но кажется, что я не делаю это правильно. Когда я связываю их таким образом, только 4-й элемент списка отображает имена элементов, остальные из них отображают только пустые флажки.WPF - как объединить несколько элементов списка из одного набора данных

Также я хотел бы знать, могу ли я привязывать флажки таким образом, как позже я получу доступ к значениям идентификатора из выбранной базы данных (поскольку я только установил Контент, и я не выбрал selectedValuePath или что-то в этом роде)?

Вот мой код ниже:

XML

<ListBox x:Name="listBox1" ItemsSource="{Binding}" HorizontalAlignment="Left" Height="52" Margin="141,264,0,0" VerticalAlignment="Top" Width="307" SelectionMode="Multiple"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <CheckBox x:Name="checkBox1" Content="{Binding NacinGrejanja}"/> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
     <Label Content="Tip Objekta:" HorizontalAlignment="Left" Margin="30,323,0,0" VerticalAlignment="Top"/> 
     <ListBox x:Name="listBox2" ItemsSource="{Binding}" HorizontalAlignment="Left" Height="26" Margin="141,323,0,0" VerticalAlignment="Top" Width="307"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <CheckBox x:Name="checkBox1" Content="{Binding TipObjekta}"/> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
     <Label Content="Opis Objekta:" HorizontalAlignment="Left" Margin="31,366,0,0" VerticalAlignment="Top"/> 
     <ListBox x:Name="listBox3" ItemsSource ="{Binding}" HorizontalAlignment="Left" Height="52" Margin="142,366,0,0" VerticalAlignment="Top" Width="307"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <CheckBox x:Name="checkBox3" Content="{Binding OpisObjekta}"/> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
     <Label Content="Dodatno:" HorizontalAlignment="Left" Margin="31,437,0,0" VerticalAlignment="Top"/> 
     <ListBox x:Name="listBox4" ItemsSource ="{Binding}" HorizontalAlignment="Left" Height="52" Margin="142,437,0,0" VerticalAlignment="Top" Width="307"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <CheckBox x:Name="checkBox4" Content="{Binding Dodatno}" /> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 

C#

private void Window_Loaded_1(object sender, RoutedEventArgs e) 
    { 
     Dataset1 ds= new Dataset1(); 
     GrejanjeTableAdapter gta = new GrejanjeTableAdapter(); 
     TipObjektaTableAdapter tta = new TipObjektaTableAdapter(); 
     OpisObjektaTableAdapter ota = new OpisObjektaTableAdapter(); 
     DodatnoTableAdapter dta = new DodatnoTableAdapter(); 
     gta.Fill(ds.Grejanje); 
     tta.Fill(ds.TipObjekta); 
     ota.Fill(ds.OpisObjekta); 
     dta.Fill(ds.Dodatno); 
     this.DataContext = ds.Grejanje; 
     this.DataContext = ds.TipObjekta; 
     this.DataContext = ds.OpisObjekta; 
     this.DataContext = ds.Dodatno; 
    } 

ответ

1

Вместо этого:

this.DataContext = ds.Grejanje; 
    this.DataContext = ds.TipObjekta; 
    this.DataContext = ds.OpisObjekta; 
    this.DataContext = ds.Dodatno; 

Вы должны попробовать это:

listbox1.ItemsSource = ds.Grejanje; 
    listbox2.ItemsSource = ds.TipObjekta; 
    listbox3.ItemsSource = ds.OpisObjekta; 
    listbox4.ItemsSource = ds.Dodatno; 

И не нужно ItemsSource="{Binding}" на ListBox элементах.

Чтобы получить выбранные элементы, вы должны связать IsChecked свойства CheckBox элемента к Логическому свойству IsChecked, как это:

<CheckBox x:Name="checkBox1" IsChecked={Binding IsSelected} Content="{Binding NacinGrejanja}"/> 

Если NacinGrejanja не содержит IsChecked свойства, то вы должны оберните его классом, который его содержит.

Идентификатор для NacinGrejanja должен быть включен внутри экземпляра, поэтому у вас не будет проблем с получением идентификатора выбранных элементов. Если это не так, то снова оберните класс, который это делает.

+0

Это сработало, но оно не показало мне текст элементов checkBox без ввода ItemSource = "{Binding}" в ListBox. Также я не уверен, что я понял, что вы имеете в виду для ID NacinGrejanja? – Adicili

+0

Что касается объекта ID, я отвечал на ваш вопрос «как я могу позже получить доступ к значениям идентификатора из выбранной базы данных» –

+0

Привет, я все еще боюсь, как проверить, установлен ли какой-либо флажок, и если он получить значения из базы данных. Могу ли я попросить вас рассмотреть эту новую тему, которую я открыл: http://stackoverflow.com/q/40452039/5721684. спасибо – Adicili