Стол Silverlight с динамическими размерами - PullRequest
1 голос
/ 22 апреля 2009

Я очень новичок в Silverlight, поэтому я прошу прощения, если этот вопрос очевиден, но я хочу создать нечто похожее на таблицу HTML, которая может иметь любое количество строк от 1 до x.

Мне нужно, чтобы таблица увеличивалась с добавлением количества строк. Кроме того, я хотел бы иметь возможность установить ширину и высоту таблицы в целом и иметь весь текст в каждой строке для динамического изменения размера соответствующим образом.

Как бы выглядел XAML для чего-то подобного?

Ура, Крис.

EDIT:

Спасибо за ответы, похоже, что я хочу, это смесь всех предложений, сделанных для архивирования этого:

  <Grid x:Name="ExampleGrid" Height="150" Width="300" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
  <Grid.RowDefinitions>
      <RowDefinition Height="*"/>
      <RowDefinition Height="*"/>
      <RowDefinition Height="*"/>
  </Grid.RowDefinitions>
  <Viewbox Stretch="Fill"  Grid.Row="0">
    <!-- Two column header -->
    <StackPanel Orientation="Horizontal">
        <TextBlock Text="Text One" Height="Auto" />
        <TextBlock Text="Text One" Height="Auto" />
    </StackPanel>
  </Viewbox>
  <Viewbox Stretch="Fill"  Grid.Row="1">
    <TextBlock Text="Text Two" Height="Auto" />
  </Viewbox>
  <Viewbox Stretch="Fill"  Grid.Row="2">
    <TextBlock Text="Text Three" Height="Auto"/>
  </Viewbox>

Ответы [ 4 ]

2 голосов
/ 22 апреля 2009

Вам, вероятно, стоит заглянуть в ListBox (или DataGrid)

Вот хорошее руководство по Silverlight Скотта ГУ:

http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-5-using-the-listbox-and-databinding-to-display-list-data.aspx

1 голос
/ 22 апреля 2009

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

<Grid x:Name="ExampleGrid" Height="20" Width="200">
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <TextBlock Text="Text One" Height="Auto" Grid.Row="0"/>
    <TextBlock Text="Text Two" Height="Auto" Grid.Row="1"/>
    <TextBlock Text="Text Three" Height="Auto" Grid.Row="2"/>
</Grid>

Это создаст трехрядную сетку. При этом каждая сетка получает равную долю доступного пространства. (звезда по высоте означает разделенное доступное пространство)

Если бы вы добавили строку во время выполнения.

ExampleGrid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });

TextBlock block = new TextBlock() { Text = "Text Four" };
Grid.SetRow(block, 3);

ExampleGrid.Children.Add(block);

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

1 голос
/ 22 апреля 2009

Вы хотите использовать Grid в вашем файле XAML. Вот пример: Как только вы определили сетку, вы можете легко и легко удалить столбцы и строки, как сказано в предыдущем посте. Установка выравнивания на Stretch позволит изменить размер сетки в браузере.

<Grid x:Name="grdName"HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >

Одна вещь, которую я нашел немного трудной для понимания, это как изменить строку или столбец и установить для него значение Auto Width. Вот пример этого.

Dim objCol As ColumnDefinition = Nothing

objCol = grdName.ColumnDefinitions.Item (0) objCol.Width = New GridLength (Double.NaN)

Если вы хотите установить ширину в любое другое значение, просто поместите число вместо Double.NaN.

О, весь этот код VB.net.

0 голосов
/ 22 апреля 2009

Я довольно плохо знаком с XAML, но уверен, что вам не нужно ничего делать в самом XAML, а скорее в коде. XAML компилируется в BAML (двоичный файл), и ваш код работает с объектами .NET, определенными в BAML, сам XAML является просто читаемым языком времени разработки.

То, что вам, вероятно, нужно, это программным образом добавить определения строк, которые будут выглядеть примерно так:

Grid g = this.Grid1
g.RowDefinitions.Add(new RowDefinition)

конечно, вы можете зацикливаться, чтобы продолжать добавлять RowDefinitions в коллекцию RowDefinitions, а также устанавливать другие свойства в RowDefinition до или после добавления их в сетку

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