как поместить массив пользовательского контроля в столбцы сетки - PullRequest
0 голосов
/ 17 февраля 2010

Привет, у меня есть массив данных о сотрудниках, который включает фотографию, описание, название должности, зарплату.Я должен показывать данные каждого сотрудника в отдельной панели управления, что означает, что если у меня будет 10 сотрудников, будет 10 панелей.и я должен показать эти панели в сетке, которая имеет две колонки.Также ширина панели в каждом столбце будет варьироваться в зависимости от размера главной страницы.

1 Ответ

0 голосов
/ 17 февраля 2010

Почему бы не представить данные о сотрудниках с помощью отдельного элемента userControl, а затем использовать панель Wrap для отображения сотрудников. Этот подход будет обрабатывать переменное количество сотрудников.

Чтобы лучше проиллюстрировать мою идею, вот код:

MainPage имеет сетку с WrapPanel, которая заполняет доступное пространство.

MainPage.xaml

<UserControl 
    x:Class="SilverlightApplication2.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:ct="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit"
    mc:Ignorable="d">

    <Grid x:Name="LayoutRoot" Background="WhiteSmoke">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="200"/>
            <ColumnDefinition/>
            <ColumnDefinition Width="200"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="200"/>
            <RowDefinition/>
            <RowDefinition Height="200"/>
        </Grid.RowDefinitions>

        <ct:WrapPanel x:Name="panel1" Grid.Row="1" Grid.Column="1" 
                      Background="Aqua" VerticalAlignment="Stretch"
                      HorizontalAlignment="Stretch"/>

    </Grid>

</UserControl>

MainPage.xaml.cs

  public partial class MainPage : UserControl
    {
        public MainPage ()
        {
            InitializeComponent();

            this.DataContext = this;
            this.Loaded += new RoutedEventHandler( MainPage_Loaded );
        }

        void MainPage_Loaded ( object sender, RoutedEventArgs e )
        {
            for ( int x = 0; x <= 10; x++ )
            {
                panel1.Children.Add( new ChildControl() );
            }
        }
    }

Я добавляю элементы управления ChildWindow, как определено ниже, чтобы показать, как WrapPanel адаптирует представление своих дочерних элементов к доступному пространству.

ChildWindow.xaml

<UserControl 
    x:Class="SilverlightApplication2.ChildControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Width="100"
    Height="100">

    <Grid x:Name="LayoutRoot" Background="PowderBlue">
        <TextBlock Text="ChildControl"/>
    </Grid>
</UserControl>

Если я пропустил вашу мысль, пожалуйста, дайте больше разъяснений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...