2013-03-22 2 views
0

У меня есть следующий код.Установка ширины XAML в процентах

<Grid Grid.Row="1"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="100*" /> 
        <ColumnDefinition Width="100*" /> 
        <ColumnDefinition Width="100*" /> 
        <ColumnDefinition Width="100*" /> 
       </Grid.ColumnDefinitions> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="100*" /> 
        <RowDefinition Height="100*" /> 
        <RowDefinition Height="100*" /> 
       </Grid.RowDefinitions> 

       <StackPanel Grid.Row="0" Grid.Column="0" Width="30*"> 
        ... 
       </StackPanel> 
    </Grid> 

Я пытаюсь установить ширину стекапаны до 30% от ячейки. Я уже направил сообщение WPF: Setting the Width (and Height) as a Percentage Value. Согласно сообщению, он должен был работать с шириной 30 *, как в сетке. Но он показывает ошибку «строка 30 * не может быть преобразована в длину». Поэтому я хотел бы исправить ошибку или просто хочу получить способ установить стекную панель шириной 30% ячейки. Благодарю.

ответ

5

Ширина для стека панели не может ничего, кроме двойного. Ширина сетки может принимать * и автоматически (* по умолчанию, если не указано)

Также обратите внимание, что StackPanel никогда не будет занимать больше ширины, чем требуется для содержимого. HorizontalAlignment = "Stretch" не действуют.

Я предлагаю вам сделать это вместо этого.

 <Grid Grid.Row="1"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="100*" /> 
      <ColumnDefinition Width="100*" /> 
      <ColumnDefinition Width="100*" /> 
      <ColumnDefinition Width="100*" /> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="100*" /> 
      <RowDefinition Height="100*" /> 
      <RowDefinition Height="100*" /> 
     </Grid.RowDefinitions> 


     <Grid Grid.Row="0" Grid.Column="0" > 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition /> 
       <ColumnDefinition /> 
       <ColumnDefinition /> 
      </Grid.ColumnDefinitions> 

      <StackPanel> 
      </StackPanel> 

     </Grid> 
    </Grid>