2012-02-11 64 views
1

爲什麼我在這個例子中看不到詳細信息。我無法更改數據類,主類和詳細類的結構。所以我必須用正確的約束來解決這個問題。WPF中的主要細節綁定

public class ViewModel 
{ 
    public dataclass data { get; set; } 

    public ViewModel() 
    { 
     data = new dataclass(); 
     master a_master = new master(); 
     a_master.mastername = "hello"; 
     detail a_detail = new detail(); 
     a_detail.detailname = "goodbye"; 
     data.details.Add(a_detail); 
     data.Add(a_master); 
    } 
} 


public class dataclass : ObservableCollection<master> 
{ 
    public ObservableCollection<detail> details { get; set; } 

    public dataclass() 
    { 
     details = new ObservableCollection<detail>(); 
    } 
} 


public class master 
{ 
    public string mastername { get; set; } 


} 


public class detail 
{ 
    public string detailname { get; set; } 
} 

而在我的XAML我綁定是這樣的:

<Window x:Class="md.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:vm="clr-namespace:md.viewmodels" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.DataContext> 
     <vm:ViewModel/> 
    </Window.DataContext> 
    <StackPanel Orientation="Vertical" > 
     <ListView ItemsSource="{Binding Path=data}"> 
      <ListView.View> 
       <GridView> 
        <GridViewColumn Header="master" DisplayMemberBinding="{Binding mastername}"/> 
       </GridView> 
      </ListView.View> 
     </ListView> 
     <ListView ItemsSource="{Binding Path=data/details}"> 
      <ListView.View> 
       <GridView> 
        <GridViewColumn Header="detail" DisplayMemberBinding="{Binding detailname}"/> 
       </GridView> 
      </ListView.View> 
     </ListView> 
    </StackPanel> 
</Window> 
+0

您需要先接受一些答案。 – Bernard 2012-02-11 16:22:25

回答

5

嘗試

<ItemsSource="{Binding Path=data.details}"> 

代替

<ItemsSource="{Binding Path=data/details}"> 

我想你想實現是什麼一種mas ter/detail的情況下綁定到分層數據,如How to: Use the Master-Detail Pattern with Hierarchical Data中所述。事實上,只要你有一個ObservableCollection<details>作爲派生自ObservableCollection<master>的類的屬性,這不是分層的,因此綁定表達式中的/將不起作用。有關/的詳細信息,請參見PropertyPath XAML Syntax,節源遍歷(綁定到集合的層次結構)

C#中capitalization還有一個被廣泛接受的約定,說你應該在這裏使用公共類型的公共類型,比如類和屬性。

+0

從來沒有看到這個與「。」。但它的確有竅門。 – 2012-02-11 17:35:27

+2

請注意帕斯卡套管的評論。 – Clemens 2012-02-11 17:37:56

+0

我可以改變這種情況。我只是想了解我在綁定中的錯誤。我真正的應用程序主,細節是實體框架類。在什麼情況下你會加載列表視圖的數據來綁定,如果不是嵌套的observables? – 2012-02-11 17:49:46