2011-03-21 78 views
0

我有這兩個類:數據綁定幫助 - WPF

class DownloadLink 
{ 
    public string Name { get; private set; } 
    public string Url { get; private set; } 
    //(...) 
} 

class DownloadGroup 
{   
    public List<DownloadLink> Links { get; private set; } 
    //(...) 
} 

class Manager 
{ 
    public List<DownloadGroup> Groups { get; private set; } 
} 

Manager managerOBJ = new Manager(); 

我想這樣顯示這個:

一切都將在列表框: 我婉managerOBJ.Groups綁定到列表框。 - 怎麼做? 比我想創建DataTamplate來顯示該組中的每個組和所有鏈接。 - 怎麼做?

我想從XAML

做盡可能

UPDATE:

這是我得到了什麼。這不是工作。列表框是空的。

<ListBox DockPanel.Dock="Right" VerticalAlignment="Stretch" Width="500" HorizontalAlignment="Right" Background="#FFE1FFF5" HorizontalContentAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Visible" ItemsSource="{Binding Path=Groups}" Name="GroupsListBox"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Height="30" VerticalAlignment="Top" Width="500" > 
        <Grid Height="Auto" Width="500"> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="*"/> 
         </Grid.ColumnDefinitions> 
         <Label Content="XX MB w XX plikach" HorizontalAlignment="Stretch" Margin="0"/> 
        </Grid> 
        <ListBox HorizontalAlignment="Stretch" Height="43" Margin="0,5,0,0" Width="Auto" VerticalAlignment="Top" ItemsSource="{Binding Path=Links}"> 
         <ListBox.ItemTemplate> 
          <DataTemplate> 
           <Label Content="{Binding Path=Name}" /> 
          </DataTemplate> 
         </ListBox.ItemTemplate> 
        </ListBox> 
       </StackPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

,並在代碼behid我:

RapideoAccount = new Rapideo(); 
GroupsListBox.DataContext = RapideoAccount; 
+0

看看你的問題右邊顯示的相關問題。你一直在問很多重複的問題正在結束。坦率地說,我們都無法忍受眼淚。您最好小心可怕的用戶禁止腳本,http://meta.stackexchange.com/questions/56817/can-we-prevent-some-of-the-low-quality-questions-from-entering-our -system/60294 – 2011-03-21 17:02:43

回答

1

整個管理器包含在一個列表框,在經理添加包含另一個項目,在它的鏈接控制一個ItemsControl每個downloadgroup 。 這可以通過使用的DataTemplates來完成:

<ListBox Name="myGroups" 
     ItemsSource="{Binding Path=Groups}"> 
    <!-- each List<DownloadGroup> in the manager: --> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <ItemsControl ItemsSource="{Binding Path=Links}"> 
       <!-- each Link in the Downloadgroup --> 
       <ItemsControl.ItemTemplate> 
        <DataTemplate> 
         <StackPanel> 
          <TextBlock Text="{Binding Path=Name}" /> 
          <TextBlock Text="{Binding Path=Url}" /> 
         </StackPanel> 
        </DataTemplate> 
       </ItemsControl.ItemTemplate> 
      </ItemsControl> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

在代碼中你會把:

Manager managerOBJ = new Manager(); 
myGroups.DataContext = managerOBJ; 
+0

我需要一點幫助,我的代碼。 – Hooch 2011-03-21 17:59:12

+0

Rapideo究竟是什麼,是你之前的經理? – Bas 2011-03-21 19:03:15

+0

是的。這是經理。 – Hooch 2011-03-21 22:01:37

0
  1. 在你的視圖模型
  2. 結合視圖模型到視圖定義managerOBJ財產
  3. 綁定列表框itemssourcemanagerOBJ.Groups
  4. 定義DataTemplate在列表框內顯示每個DownloadGroup