2012-03-05 79 views
0

我想在畫布控件中設置圖像,並使用循環創建20個畫布。問題是,當我想要將所有這些畫布項添加到滾動查看器中時,它不起作用。這裏是我的代碼:如何在wpf的滾動查看器中設置多個畫布?

private void CreateAndShowCanvas() 
{ 
    List<Canvas> list = new List<Canvas>(); 

    for (int i = 0; i < 20; i++) 
    { 


     Canvas myCanvas1 = new Canvas(); 
     myCanvas1.Background = new SolidColorBrush(Colors.Transparent); 
     myCanvas1.Height = 235; 
     myCanvas1.Width = 626; 
     //Canvas.SetZIndex(myCanvas1, 4); 
     Image MainImage = new Image(); 
     MainImage.Width = 275; 
     MainImage.Height = 235; 
     BitmapImage mi = new BitmapImage(new Uri("select_1.png", UriKind.Relative)); 
     MainImage.Source = mi; 
     Canvas.SetTop(MainImage, 0); 
     Canvas.SetLeft(MainImage, 0); 
     myCanvas1.Children.Add(MainImage); 

     Image SeparatorImage = new Image(); 
     BitmapImage si = new BitmapImage(new Uri("Sentre Seprator.png", UriKind.Relative)); 
     SeparatorImage.Height = 270; 
     SeparatorImage.Source = si; 
     Canvas.SetTop(SeparatorImage, -5); 
     Canvas.SetLeft(SeparatorImage, 310); 
     myCanvas1.Children.Add(SeparatorImage); 
     Image SecondImage = new Image(); 
     SecondImage.Width = 275; 
     SecondImage.Height = 235; 
     BitmapImage sci = new BitmapImage(new Uri("select_2.png", UriKind.Relative)); 
     SecondImage.Source = sci; 
     Canvas.SetTop(SecondImage, 0); 
     Canvas.SetLeft(SecondImage, 350); 
     myCanvas1.Children.Add(SecondImage); 
     list.Add(myCanvas1); 
    } 

    scv.Content = list; 
} 

和XML:

<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" Height="350" Width="525"> 
<Grid> 
    <ScrollViewer Name="scv" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled" Margin="60,40,59,46" Opacity="99" Background="Transparent" /> 
</Grid> 
</Window> 

,當我運行它,那隻能說明( 「文集」)。請幫助我,在此先感謝...

+3

您正在開發WPF或Windows Phone 7嗎?這些不一樣!如果我看看你的代碼(Class =「WpfApplication1.MainWindow」),我相信你的意思是WPF而不是WP7 ... – Abbas

回答

0

A ScrollViewer只能容納一個孩子,所以您需要另一個面板類型,例如Grid或StackPanel來存放您的畫布。

<Grid> 
    <ScrollViewer Name="scv" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled" Margin="60,40,59,46" Opacity="99" Background="Transparent"> 
     <StackPanel Name="stp" /> 
    </ScrollViewer>  
</Grid> 

將畫布添加到stp中。

0

如果你不只是使用一個ListBox和一個其中有Canvases的ItemTemplate呢?除了手動創建20個畫布以外,必須有更簡單的方法來完成您試圖實現的任何目標。

Here's some reading to do with ListBoxes