2011-02-12 86 views
4

我正在開發window phone 7應用程序。我不熟悉window phone 7應用程序。我在我的應用程序中有以下列表框控件如何在列表框控件中水平顯示項目?

<ListBox Margin="0,355,70,205" Name="WeekSummaryListBox" DataContext="{Binding}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock TextWrapping="Wrap" Width="150" Text="{Binding Amount}" Foreground="Orange"></TextBlock> 
       <TextBlock TextWrapping="Wrap" Width="150" Text="{Binding Currency}" Foreground="Orange"></TextBlock>        
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 

    <ListBox.Template> 
     <ControlTemplate> 
      <ScrollViewer HorizontalScrollBarVisibility="Visible"> 
       <ItemsPresenter /> 
      </ScrollViewer> 
     </ControlTemplate> 
    </ListBox.Template> 
</ListBox> 

在上面的列表框中,垂直顯示控件項目。我想要在列表框控件中顯示項目。所以我使用下面的代碼。

<ListBox.ItemsPanel> 
    <ItemsPanelTemplate> 
     <StackPanel Orientation="Horizontal"/> 
    </ItemsPanelTemplate> 
</ListBox.ItemsPanel> 

但是當我把兩個文本塊放入stackpanel時,它會給出錯誤。爲此,我使用以下代碼

<StackPanel Orientation="Horizontal"> 
    <TextBlock TextWrapping="Wrap" Width="150" Text="{Binding Amount}" Foreground="Orange"></TextBlock> 
    <TextBlock TextWrapping="Wrap" Width="150" Text="{Binding Currency}" Foreground="Orange"></TextBlock>        
</StackPanel> 

我正在嘗試以下代碼。在下面的代碼我收到錯誤

<ListBox Margin="0,355,70,205" Name="WeekSummaryListBox" DataContext="{Binding}"> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock TextWrapping="Wrap" Width="150" Text="{Binding Amount}" Foreground="Orange"></TextBlock> 
       <TextBlock TextWrapping="Wrap" Width="150" Text="{Binding Currency}" Foreground="Orange"></TextBlock> 
      </StackPanel> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
    <ListBox.Template> 
     <ControlTemplate> 
      <ScrollViewer HorizontalScrollBarVisibility="Visible"> 
       <ItemsPresenter /> 
      </ScrollViewer> 
     </ControlTemplate> 
    </ListBox.Template> 
</ListBox> 

我收到錯誤「無法明確修改小組的孩子們收集作爲ItemsPanel爲面板ItemsControl.ItemsControl geneartes子元素」

我使用以下函數來顯示列表框中的數據:

public void WeekSumValue(int TransactionType_ID) 
{ 
    UserInterfaceManager UserInterfaceManagerObj = new UserInterfaceManager(); 
    List<UserInterfaceManager.TotalSummary> WeekSummary = new List<UserInterfaceManager.TotalSummary>();   
    ObservableCollection<AmountCurrency> WeekIncomeSumCollection = new ObservableCollection<AmountCurrency>(); 

    WeekSummary = UserInterfaceManagerObj.LoadWeekSum(SelectedButtonName, TransactionType_ID, selectedDate); 

    foreach (UserInterfaceManager.TotalSummary vWeekSummary in WeekSummary) 
    { 
     WeekIncomeSumCollection.Add(new AmountCurrency(vWeekSummary.Amount, vWeekSummary.Currency)); 
    } 

    if (WeekIncomeSumCollection.Count != 0 && SummaryCombobox.SelectedIndex == 0) 
    { 
     WeekSummaryListBox.ItemsSource = WeekIncomeSumCollection; 
    } 
    else if (WeekIncomeSumCollection.Count != 0 && SummaryCombobox.SelectedIndex == 2) 
    { 
     MonthSummaryListBox.ItemsSource = WeekIncomeSumCollection; 
    } 
    else 
    { 
     ObservableCollection<TextBlock> NoRecordsCollection = new ObservableCollection<TextBlock>(); 
     TextBlock NoRecordsTextBlock = new TextBlock(); 
     NoRecordsTextBlock.Text = "No record found"; 
     NoRecordsTextBlock.FontSize = 25; 
     NoRecordsTextBlock.Foreground = new SolidColorBrush(Colors.Gray); 
     NoRecordsCollection.Add(NoRecordsTextBlock); 

     if (SummaryCombobox.SelectedIndex == 0) 
      WeekSummaryListBox.ItemsSource = NoRecordsCollection; 

     if (SummaryCombobox.SelectedIndex == 2) 
      MonthSummaryListBox.ItemsSource = NoRecordsCollection; 
    } 
} 

在上面的函數中數據是動態的。可以有兩個,三個或更多的記錄,也沒有記錄。我這個動態數據綁定到它們

我使用上面的代碼

public class AmountCurrency 
{ 
    public int Amount { get; set; } 
    public String Currency { get; set; } 

    public AmountCurrency(int Amount, String Currency) 
    { 
     this.Amount = Amount; 
     this.Currency = Currency; 
    } 
} 

我應該如何把上述兩個textbock這將顯示列表框內部使用了下面的類列表框裏面的TextBlocks物品水平地?你能否給我提供任何可以解決上述問題的代碼或鏈接?如果我做錯了什麼,請指導我。

+1

什麼錯誤你好嗎? – 2011-02-12 14:42:24

+5

如果我有一個美元(英鎊,歐元,無論),我看到每個問題包含「我得到一個錯誤」的聲明,而沒有包括錯誤是什麼,我估計我可以退休。 – AnthonyWJones 2011-02-12 17:02:17

+1

我修改了我的問題並描述了我所得到的錯誤。請參見。 – 2011-02-14 07:07:38

回答

8

它看起來像我已經有了模板錯誤部分內的兩個文本塊。

這兩個文本塊應該在ListBox.ItemTemplate,而不是在ListBox.ItemsPanelTemplate

<ListBox ItemsSource="{Binding Items}"> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel Orientation="Horizontal"></StackPanel> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Margin="0,0,0,17" Width="300" Orientation="Horizontal"> 
       <TextBlock TextWrapping="Wrap" Width="150" Text="{Binding Amount}" Foreground="Orange"></TextBlock> 
       <TextBlock TextWrapping="Wrap" Width="150" Text="{Binding Currency}" Foreground="Orange"></TextBlock> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

如果您想了解如何控制工程,然後從working "basic" control which shows items開始,然後看看添加了ItemsPanelTemplate到工作樣本。

0

更換DataContext="{Binding}"ItemsSource="{Binding}"爲我的作品。