Динамически построить список выбора из списка с неизвестным количеством членов - PullRequest
0 голосов
/ 07 апреля 2011

То, что я пытаюсь сделать, - это создать всплывающее окно silevrlight, которое отображает изображения для пользователя и позволяет им выбрать радиоуправление внизу, чтобы определить, какую опцию они выбрали.У меня есть такой объект:

 public class ConfigImage
{
    public int ConfigID { get; set; }
    public string ConfigName { get; set; }
    public string ImagePath { get; set; }
}

Код возвращает список ConfigImage с неизвестным количеством членов.Я пытаюсь использовать сетку для отображения изображений для пользователя, поэтому я динамически добавляю столбцы в зависимости от количества членов в списке.Я ожидаю, что от 2 до 5 членов будут в списке.Проблема в том, что я пытаюсь динамически добавлять изображение и радиоуправление.Я не могу найти пример где-нибудь из этого.Я пытался добавить элементы управления, используя такой код:

LayoutRoot.Children.Add(new Label);

, но потом понятия не имел, как установить свойства для нового элемента управления Label.Я должен это знать, но я рисую пустым и не могу найти пример этого.

Помощь будет высоко ценится!

Ответы [ 2 ]

0 голосов
/ 07 апреля 2011

просто используйте любой из элементов пользовательского интерфейса на основе списка в Silverlight - они позволят вам привязать данные к наблюдаемой коллекции, которую вы можете обновить во время выполнения, простейшим из них будет ItemsControl - какую разметку вы используете для каждый элемент в коллекции вы можете полностью контролировать в XAML.

0 голосов
/ 07 апреля 2011

Если вам абсолютно необходимо добавить элементы управления в код, вам потребуется ссылка на объект для установки свойств:

Label label = new Label();
label.Content = "text";
label.Width = 10;
LayoutRoot.Children.Add(label);

В качестве альтернативы, вы можете использовать инициализаторы:

LayoutRoot.Children.Add(new Label()
{
    Content = "text",
    Width = 10
});

Как сказал BrokenGlass, вы, вероятно, можете сделать это полностью в xaml, однако.

Edit: Чтобы проиллюстрировать подход только для xaml, используя предложение ItemsControl от BrokenGlass:

<ItemsControl x:Name="ConfigImagesItemsControl" ItemsSource="MyConfigImagesList">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
                <Image Grid.Row="0" Source="{Binding ImagePath}" />
                <RadioButton Grid.Row="1" Content="{Binding ConfigName}" GroupName="ConfigImagesGroup" />
            </Grid>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...