2010-05-06 77 views
3

我已經設置了我的DataContext這樣的:WPF綁定路徑= /不工作?

<Window.DataContext> 
    <c:DownloadManager /> 
</Window.DataContext> 

哪裏DownloadManagerEnumerable<DownloadItem>。然後,我把我的DataGrid這樣的:

<DataGrid Name="dataGrid1" ItemsSource="{Binding Path=/}" ... 

因此,它應該列出所有DownloadItems,對不對?所以,我應該能夠把我列,如:

<DataGridTextColumn Binding="{Binding Path=Uri, Mode=OneWay}" 

哪裏UriDownloadItem的屬性。但它似乎並不喜歡這樣。在視覺屬性編輯器中,它不識別Uri是一個有效的屬性,所以我猜測我做錯了什麼。

它之前工作,當我有數據網格綁定到Values,但後來我把那個枚舉出DownloadManager,並使其本身enumerable。我該如何解決? PS:通過「不工作」我的意思是它不列出任何項目。我已經添加了一些DM的構造函數,所以它不應該是空的。

+1

'路徑= /'試圖找到的'DownloadManager'稱爲'/'一個屬性 - 這永遠不會是正確的。 (如果它是'XmlDataSource',你可以使用'XPath = /',但這是一個完全不同的故事......) – 2010-05-06 20:56:11

+0

@Dan:啊..我剛從屬性編輯器中選擇了「Current Item」,這就是它給我。 – mpen 2010-05-06 20:58:17

+0

@Dan - Path = /將綁定到DataContext中的當前項目(當 DataContext是一個集合時)。這裏有一個很好的資源,我經常在使用綁定路徑時使用:http://www.nbdtech.com/Blog/archive/2009/02/02/wpf-xaml-data-binding-cheat-sheet.aspx – 2010-05-06 21:03:28

回答

7

嘗試ItemsSource="{Binding}"。這應該夠了。

+0

太棒了!像魅力一樣工作。 – mpen 2010-05-06 20:54:47

+1

或'ItemsSource =「{Binding Path =。}」'。兩者都做同樣的工作。 – Amsakanna 2010-05-07 06:54:56

-1

作爲丹科答案的替代方案,我發現了靜態資源! (我是一個WPF小白)

<Window x:Class="ImageGetGUI.MainWindow" 
    ... 
    <Window.Resources> 
     <c:DownloadManager x:Key="dm"/> 
    </Window.Resources> 
    ... 
    <DataGrid Name="dataGrid1" ItemsSource="{StaticResource dm}" ... 
+0

你也可以命名你的Window.DataContext,即 ''這將允許你通過名字訪問DataContext你的代碼如果需要的話。你可能也想看看一個ObjectDataProvider;我發現它們放在應用程序的資源字典中時非常有用。例如,當您有一個在多個視圖上重複使用的集合時,即「列表」。 – 2010-05-07 00:18:36

5

在回答爲什麼{}綁定工作,但{綁定路徑= /}不工作,我加入了以下信息作爲回答的OP的問題澄清差異。

以下是從MSDN Data Binding Overview > Binding to Collections採取:

當前項指針

視圖還支持 當前項目的概念。您可以通過 導航集合視圖中的對象。由於您導航的是 ,因此您正在移動一個項目 指針,該指針允許您檢索 存在於該集合中特定位置的對象。 有關示例,請參閱How to: Navigate Through the Objects in a Data CollectionView

因爲WPF使用視圖(或視圖你 指定,或收集的默認 視圖)綁定到一個集合只 ,所有綁定到集合 有當前項指針。當 綁定到視圖時,Path值中的斜槓(「/」) 字符指定 視圖的當前項目。在以下示例中, 的數據上下文是 集合視圖。第一行 綁定到集合。第二個 行綁定到 集合中的當前項目。第三行綁定 集合中當前項目的 的Description屬性。

<Button Content="{Binding }" /> 
<Button Content="{Binding Path=/}" /> 
<Button Content="{Binding Path=/Description}" /> 
+0

哦......好吧。現在我懂了。當前項目= DataContext。這是DataContext中的第一個項目*。 – mpen 2010-05-06 23:00:07