Как сделать стол в Silverlight? - PullRequest
6 голосов
/ 20 апреля 2010

Итак, я хотел бы создать видимую таблицу с рамкой вокруг каждой ячейки и другим цветом фона для заголовка. Я хотел бы в конечном итоге вставить элементы управления в этом. Например, поместите текстовое поле внутри одного из элементов таблицы, или нескольких переключателей и т. Д. Есть ли для этого элемент управления?

Я сузил это до двух вариантов, но оба они кажутся чем-то вроде "ме":

  1. используйте Grid Control - мне это нравится, но есть ли способ закрасить границу ячейки (я не нашел это)

  2. используйте элемент управления DataGrid - этот элемент слишком сложен для того, что мне нужно.

Я просто ищу таблицу в стиле html в silverlight, есть идеи?

Ответы [ 2 ]

9 голосов
/ 20 апреля 2010

Я получил довольно приличные результаты с HeaderedItemsControl в наборе инструментов:

<c:HeaderedItemsControl ItemsSource="{Binding rowData}" x:Name="theTable">
    <c:HeaderedItemsControl.Header>
        <Border Background="HEADER BG COLOR HERE">
            <Grid Width="{Binding ActualWidth, ElementName=theTable}">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="*"/>                
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Column="0" Text="Field 1"/>
                <TextBlock Grid.Column="1" Text="Field 2"/>
                <TextBlock Grid.Column="2" Text="Field 3"/>
            </Grid>
        </Border>
    </c:HeaderedItemsControl.Header>
    <c:HeaderedItemsControl.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="*"/>                
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Column="0" Text="{Binding Value1}"/>
                <TextBlock Grid.Column="1" Text="{Binding Value2}"/>
                <TextBlock Grid.Column="2" Text="{Binding Value3}"/>
            </Grid>
        </DataTemplate>
    </c:HeaderedItemsControl.ItemTemplate>
</c:HeaderedItemsControl>

И, конечно же, вы можете придумать вышесказанное по душе ...

2 голосов
/ 20 апреля 2010

Вы можете использовать Grid с элементом Border в каждой ячейке (с BorderThickness и BorderBrush \ Background) Посмотрите на этот образец (с UniformGrid):

<UniformGrid Margin="10" Name="uniformGrid1">
    <Border BorderThickness="1" BorderBrush="Red">
        <TextBlock Text="1"></TextBlock>
    </Border>
    <Border BorderThickness="1" BorderBrush="Blue">
        <TextBlock Text="2"></TextBlock>
    </Border>
    <Border BorderThickness="1" BorderBrush="Black">
        <TextBlock Text="3"></TextBlock>
    </Border>
    <Border BorderThickness="1" BorderBrush="Yellow">
        <TextBlock Text="4"></TextBlock>
    </Border>
</UniformGrid>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...