2011-03-22 385 views
0

我有以下問題:WPF如何綁定tabitem與列表

我有一些數據加載在我的應用程序,需要放在一個選項卡控件。

的數據的格式爲:

class objectType1 
{ 
    string property_1; 
    string prorerty_2; 
} 

class mainObject 
{ 
    string mainProperty_1; 
    string mainProperty_2; 
    List<objectType1> objectsList; 
} 

並且所有數據在類型的對象加載

List<mainObject> myListofObjects 

到目前爲止我設法創建相對於所述的TabItems到myListofObjects項 (即如果列表有5個對象,5個標籤包含信息mainProperty_1和mainProperty_2的標題創建) 現在我需要將每個objectsList中包含的數據添加到其各自的標籤...

的mainProperty_1代表的圖像,必須加載中...

<TabControl x:Name="_DataList" Margin="10"> 
     <!-- Header --> 
     <TabControl.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <Image Height="18" Source="{Binding mainProperty_1/> 
        <TextBlock Text="{Binding mainProperty_2}" Margin="2,0,0,0" /> 
       </StackPanel> 
      </DataTemplate> 
     </TabControl.ItemTemplate> 
     <!-- Content --> 
     <TabControl.ContentTemplate> 
      <DataTemplate x:Name="objectDataTemplate"> 
       <Grid Margin="5"> 
        <StackPanel Orientation="Horizontal"> 
         <Image Source="{Binding property_1}" ToolTip="{Binding property_2}" IsHitTestVisible="false" Stretch="Uniform"/> 
        </StackPanel> 
       </Grid> 
      </DataTemplate> 
     </TabControl.ContentTemplate> 
    </TabControl> 

我將數據傳遞到TabControl在後面的代碼與

_DataList.ItemsSource = myListofObjects; 

這是不工作的內容。 ..

標題加載就好(圖片和文字...)

任何人有什麼想法如何做到這一點?

非常感謝!

回答

0

你的ContentTemplate似有不妥:

<TabControl x:Name="_DataList" Margin="10"> 
    <!-- Header --> 
    <TabControl.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <Image Height="18" Source="{Binding mainProperty_1/> 
       <TextBlock Text="{Binding mainProperty_2}" Margin="2,0,0,0" /> 
      </StackPanel> 
     </DataTemplate> 
    </TabControl.ItemTemplate> 
    <!-- Content --> 
    <TabControl.ContentTemplate><!-- its bound to one mainObject --> 
     <DataTemplate x:Name="objectDataTemplate"> 
<!-- if you wanna bind to something from your objectsList you have to threat it like a list, cause it is :) --> 

<ListBox Itemssource={Binding objectsList}> 
<ListBox.ItemTemplate> 
    <DataTemplate DataType="{x:Type objectType1}"> 
     <StackPanel Orientation="Horizontal"> 
      <Image Source="{Binding property_1}" ToolTip="{Binding property_2}" IsHitTestVisible="false" Stretch="Uniform"/> 
     </StackPanel> 
    </DataTemplate> 
</ListBox.ItemTemplate> 
</ListBox> 

     </DataTemplate> 
    </TabControl.ContentTemplate> 
</TabControl> 
+0

感謝您的回答!不幸的是,行 引發錯誤「類型引用無法找到名爲'objectType1'的公共類型' ,儘管類定義是公共的,以及mainObject類中的List定義類... 再次感謝! – geo 2011-03-22 14:35:43

+0

好的。我明白了! 非常感謝! – geo 2011-03-22 14:58:53

0

1)你是否試圖通過綁定連接到列表?

var b = new Binding("myListofObjects"); 
BindingOperations.SetBinding(_DataList, ItemsControl.ItemsSourceProperty, b); 

2)如果您使用綁定,您是否設置了適當的DataContext?