2016-11-06 53 views
0

我正在構建一個應用程序,該應用程序將根據選中的項目從數據庫返回數據複選框。通過綁定數據,我已成功顯示數據庫中的數據。就像這樣:WPF - 如何從列表框內的複選框項目中讀取值並與數據庫綁定?

XAML:

<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" IsChecked="{Binding IsSelected}" Content="{Binding NacinGrejanja}"/> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

C#:

 private void Window_Loaded_1(object sender, RoutedEventArgs e) 
    { 
     Dataset1 ds= new Dataset1(); 
     GrejanjeTableAdapter gta = new GrejanjeTableAdapter(); 
     gta.Fill(ds.Grejanje); 
     listbox1.DataContext = ds.Grejanje; 
    } 

但我無法弄清楚如何從檢查值中提取的字符串值,然後再搜索數據庫中的值。我無法通過代碼訪問checkBox1的任何屬性。

另外我想首先檢查是否有任何複選框項被選中。

回答

2

您可以使用下面的LINQ:

ds.Grejanje.Where(item => item.IsSelected == true); 

它將返回的檢查項目列表。

+0

嗨,山姆,謝謝你的回答。這種方式給我在IsSelected上的一個錯誤:'Nekretninko.DataSet.GrejanjeRow'不包含'IsSelected'的定義,並且沒有任何接受'Nekretninko.DataSet.GrejanjeRow'類型的第一個參數的擴展方法'IsSelected'可以被找到你忘了使用指令或程序集引用了嗎? – Adicili

+0

@Adicili對不起,很快就沒有回覆。上面,你的'listbox1'綁定到'ds.Grejanje'。並且從你的XAML('IsChecked =「{Binding IsSelected} ),我假設'ds.Grejanje'中的項目/行具有一個名爲'IsSelected'的屬性,所以當我在'ds.Grejanje'中使用linq查詢時,理想情況下它不應該拋出錯誤 – sam

+0

@Adicili你可以在'ds.Grejanje'上分享你的物品的屬性嗎?那麼我將能夠更好地幫助你。 – sam

相關問題