2010-10-20 25 views
2

我剛開始使用WPF,並且遇到從Linq查詢的結果到ListView的數據綁定問題。是否可以直接從linq查詢結果到控件進行數據綁定?

我已經嘗試了許多組合,包括將DataContext和ItemsSource設置爲查詢。如:

listView.DataContext = (from person in People select person).ToList(); 

然後在XAMLDisplayMemberBinding設置爲{綁定名}或{綁定/名稱}等

我不擔心任何更新比其他任何一種方式只是在此階段顯示查詢中的項目列表。

所以我想我錯過了一些WPF的基本知識,但這部分似乎有一個相當陡峭的學習曲線,所以也許在一些示例代碼的正確方向微調是好的。看來,大多數代碼涉及大量的數據視圖創建或通知數據類型,或者至少綁定到本地對象,而不是直接從查詢中獲取。

回答

2

嘗試,而不是:

listView.ItemsSource = (from person in People select person).ToList(); 

[DataContext的設置綁定上下文的控制和它的孩子。的ItemsSource設置用於生成在控制項目的內容集合]

你也可以簡單:

listView.ItemsSource = People; 

富勒例如:

MainWindow.xaml:

<Window x:Class="WpfApplication2.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <ListView x:Name="listView"> 
      <ListView.View> 
       <GridView> 
        <GridViewColumn DisplayMemberBinding="{Binding Name}"/> 
        <GridViewColumn DisplayMemberBinding="{Binding Age}"/> 
       </GridView> 
      </ListView.View> 
     </ListView> 
    </Grid> 
</Window> 

MainWindow.xaml.cs:

using System.Windows; 

namespace WpfApplication2 
{ 
    public partial class MainWindow : Window 
    { 
    public MainWindow() 
    { 
     InitializeComponent(); 

     var people = new[] { new { Name = "John", Age = 40 }, new { Name = "Bill", Age = 50 } }; 
     listView.ItemsSource = people; 
    } 
    } 
} 
+0

謝謝,我已經嘗試了DataContext和ItemsSource無濟於事。我認爲我的相應XAML是問題所在。對於你的第一個答案,你將DisplayMemberBinding設置爲列的是什麼? – 2010-10-20 20:16:34

+0

DisplayMemberBinding應設置爲您要在該列中顯示的Person(?)類的屬性。 – lesscode 2010-10-21 12:37:47

+0

我的語法是否正確,如我的問題所列:{綁定名稱}等?因爲這對我來說似乎並不奏效。我今晚可以發佈更完整的版本。 – 2010-10-21 21:22:33

相關問題