Как установить несколько холстов в просмотрщике прокрутки в wpf? - PullRequest
0 голосов
/ 05 марта 2012

Я хочу установить изображение в элементе управления canvas и создать 20 холстов, которые я создаю с помощью цикла. Проблема в том, что когда я хочу добавить все эти элементы холста в просмотрщик прокрутки, это не работает. Вот мой код:

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>

и когда я запускаю его, он показывает только («Коллекция»). Пожалуйста, помогите мне, спасибо заранее ...

Ответы [ 2 ]

0 голосов
/ 05 марта 2012

Если вы не просто используете ListBox с ItemTemplate, в котором вместо этого есть Canvases? Должен быть более простой способ сделать все, что вы пытаетесь достичь, чем создание 20 полотен вручную.

Вот некоторые примеры чтения списков .

0 голосов
/ 05 марта 2012

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.

...