2014-01-21 2 views
1

Сначала я хочу сообщить вам, что я не совсем во всех функциях XAML. Я создаю одно из своих первых приложений в области Windows 8.Xaml.xaml Сетка с подсветкой

В настоящее время я создаю легенду, в которой объясняются все точки, которые могут быть найдены в приложении. Для этой легенды я использую ограничения Grid для определения строк и столбцов, которые отображаются.

Вопрос в том, кто-то знает, как определить определенные строки и столбцы в сетке?

(Часть кода я использовал для создания легенды:

  <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="2*"/> 
       <ColumnDefinition Width="7*"/> 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="1*"/> 
       <RowDefinition Height="1*"/> 
       <RowDefinition Height="1*"/> 
       <RowDefinition Height="1*"/> 
       <RowDefinition Height="1*"/> 
      </Grid.RowDefinitions> 

      <TextBlock x:Name="lText1" Grid.Column="1" Grid.Row="0" Text="Definition 1" FontSize="33"/> 
      <TextBlock x:Name="lText2" Grid.Column="1" Grid.Row="1" Text="Definition 2" FontSize="33"/> 
      <TextBlock x:Name="lText3" Grid.Column="1" Grid.Row="2" Text="Definition 3" FontSize="33"/> 
      <TextBlock x:Name="lText4" Grid.Column="1" Grid.Row="3" Text="Definition 4" FontSize="33"/> 
      <TextBlock x:Name="lText5" Grid.Column="1" Grid.Row="4" Text="Definition 5" FontSize="33"/> 

)

+0

ли вы имеете в виду и хотите, чтобы показать сетку линии? – Praveen

+0

Да, вот что я имел в виду. Извините, если я не понял. – Klyner

+1

@ Klyner, очевидно, WinRT не обладает свойством ShowGridLines. Поэтому вам нужно создать его вручную, как показано в моем обновленном ответе. – har07

ответ

1

Самый простой способ установить ShowGridLines свойство вашей сетки в True

ShowGridLines="True" 

Есть другие варианты, в зависимости от того, как вы хотите точно отображать контуры. Некоторые из этих вариантов объясняются в этом SO post.

UPDATE:

Поскольку вы разрабатываете на платформе Win RT, которая не имеет ShowGridLines свойство, вы должны сделать контуры по своему усмотрению. Минимальное усилие, которое я могу представить, - добавить Rectangle для каждого Row, охватывающего все столбцы, и добавить Rectangle для каждого столбца, охватывающего все строки. Для этого потребуется меньше прямоугольников, чем если бы вы создали его для каждой ячейки, как показано в ссылке выше. Например, отметьте this other SO post. И пример для случая:

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="2*"/> 
    <ColumnDefinition Width="7*"/> 
</Grid.ColumnDefinitions> 
<Grid.RowDefinitions> 
    <RowDefinition Height="1*"/> 
    <RowDefinition Height="1*"/> 
    <RowDefinition Height="1*"/> 
    <RowDefinition Height="1*"/> 
    <RowDefinition Height="1*"/> 
</Grid.RowDefinitions> 

<TextBlock x:Name="lText1" Grid.Column="1" Grid.Row="0" Text="Definition 1" FontSize="33"/> 
<TextBlock x:Name="lText2" Grid.Column="1" Grid.Row="1" Text="Definition 2" FontSize="33"/> 
<TextBlock x:Name="lText3" Grid.Column="1" Grid.Row="2" Text="Definition 3" FontSize="33"/> 
<TextBlock x:Name="lText4" Grid.Column="1" Grid.Row="3" Text="Definition 4" FontSize="33"/> 
<TextBlock x:Name="lText5" Grid.Column="1" Grid.Row="4" Text="Definition 5" FontSize="33"/> 

<!-- Horizontal Lines --> 
<Rectangle Grid.ColumnSpan="2" Height="1" VerticalAlignment="Bottom" Fill="Black"/> 
<Rectangle Grid.Row="1" Grid.ColumnSpan="2" Height="1" VerticalAlignment="Bottom" Fill="Black"/> 
<Rectangle Grid.Row="2" Grid.ColumnSpan="2" Height="1" VerticalAlignment="Bottom" Fill="Black"/> 
<Rectangle Grid.Row="3" Grid.ColumnSpan="2" Height="1" VerticalAlignment="Bottom" Fill="Black"/> 
<Rectangle Grid.Row="4" Grid.ColumnSpan="2" Height="1" VerticalAlignment="Bottom" Fill="Black"/> 
<!-- Vertical Lines --> 
<Rectangle Grid.RowSpan="5" Width="1" HorizontalAlignment="Right" Fill="Black"/> 
<Rectangle Grid.Column="1" Grid.RowSpan="5" Width="1" HorizontalAlignment="Right" Fill="Black"/> 
+1

Спасибо за помощь и объяснение! – Klyner

1

Просто добавьте ShowGridLines="True" к сетке

Например

<Grid Name="grdValues" Height="155" ShowGridLines="True"> 
<Grid.ColumnDefinitions> 
<ColumnDefinition Width="125"/> 
</Grid.ColumnDefinitions> 
<Grid.RowDefinitions> 
<RowDefinition Height="75"/> 
<RowDefinition Height="75"/> 
</Grid.RowDefinitions> 
</Grid> 

Update

<Border BorderThickness="1" Grid.Column="1" Grid.Row="0" Name="brdUsrName" HorizontalAlignment="Stretch" VerticalAlignment="Center" Height="60" Background="Black"> 
<TextBlock x:Name="lText1" Text="Definition 1" FontSize="33"/> 
</Border> 
+1

Я использую Windows 8 XAML, я думаю, я должен был признать это. Когда я просто добавляю эти слова в сетку, xaml сообщает мне, что «ShowGridLines не распознается или недоступен». Я думаю, что Windows 8 не поддерживает «ShowGridLines». – Klyner

+0

Имеет ли сетка свойство ShowGridLines? – Praveen

+0

К сожалению, это не так. – Klyner