2011-01-27 37 views
0

我剛剛學習Windows Phone 7的XAML和編程。 我試圖爲WP7 Pivot Control創建項目模板。我能夠製作一個包含列表框的模板。是否有可能在代碼隱藏中訪問此列表框,以便我可以基於一個自定義類的集合來填充它?基本上它是如何工作的是我有一個數據透視控件,並且該控件中的每個項目都是一個類別。對於添加的每個類別,都有屬於該類別的項目列表。我需要能夠使用該類別的項目填充每個數據透視項目上的列表。如何填充項目模板中的列表框

我搜索了關於如何實現這一點的想法,並且我在數據綁定上得到了很多示例,但是我不太瞭解數據綁定如何在XAML中工作。

數據綁定是要走的路或我可以以某種方式獲得對列表框的引用並自己添加項目? 任何幫助將大大appriciated!

謝謝

回答

0

我已經將問題的一些注意事項:

1)如果您是通過綁定填寫類別列表中,那麼你沒有入口點綁定保證comleted(因爲在結合執行延期時尚)。

2)與DataTemplate方法相比,使用ItemTemplate的內容更加棘手和不可靠,您應該僅在獨佔情況下使用它。 LogicalTreeHelper和VisualTreeHelper類將爲您提供幫助。

3)但我建議你建立基於DataTemplates的視圖,因爲它是WPF中的常見做法。你真的認爲這段代碼很複雜嗎?

<Window x:Class="WpfApplication1.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow"> 
<Window.Resources> 
    <DataTemplate x:Key="InnerItemDataTemplate"> 
     <TextBlock Text="{Binding Name}"/> 
    </DataTemplate> 

    <DataTemplate x:Key="CategoryDataTemplate"> 
     <StackPanel> 
      <ListView ItemsSource="{Binding InnerItems}" 
         ItemTemplate="{StaticResource InnerItemDataTemplate}"/> 
     </StackPanel> 
    </DataTemplate> 
</Window.Resources> 
<Grid> 
    <ListView ItemsSource="{Binding Categories}" 
       ItemTemplate="{StaticResource CategoryDataTemplate}"/> 
</Grid> 

public class Category 
{ 
    public IEnumerable<InnerItem> InnerList 
    { 
     get{/*...*/} 
    } 
} 

class InnerItem 
{ 
    public string Name 
    { 
     get{/*...*/} 
    } 
} 

public class SampleModel 
{ 
    public IEnumerable<Category> Categories 
    { 
     get {/*...*/} 
    } 
} 
0

如果你創建了一個新的「Windows Phone的Pivot應用程序」的默認代碼展示了這樣的一個例子,但重用在多個pivotitems列表框中相同的項目。

下面是該示例代碼正在做什麼以及如何改變它的概述。

在MainPage的構造函數中,DataContext被設置爲一個對象(App.ViewModel)。

This Loaded MainPage的事件確保App.ViewModel已填充。

App.ViewModelMainViewModel的一個實例。

MainViewModel包含一個名爲「Items」的ObservableCollection。正是這種綁定到一個idividual ListBoxPivotItem

<controls:PivotItem Header="first"> 
    <ListBox ItemsSource="{Binding Items}"> 
     ... 
    </ListBox> 
</controls:PivotItem> 

在列表框,您可以參考「項目」集合的內容。

如果你想調整它以爲每個ListBox/PivotItem設置不同的集合,你可以調整它以在MainViewModel中擁有多個集合。

HTH。