2016-07-10 8 views
1

Скажите, почему при работе с кодом приложения на всю область выделяется список, а не конкретная строка listboxItem, помещенная в строку таблицы?Что не так с макетом XAML

<ListBox x:Name="menu" SelectionMode="Single" SelectionChanged="Changed"> 
     <Grid> 
      <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="100"/> 
      </Grid.RowDefinitions> 
      <ListBoxItem Name="Main" Grid.Row="0"> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock FontSize="20" FontFamily="Segoe MDL2 Assets" 
          Text="&#xE710;"/> 
       <TextBlock FontSize="17" Text="Add" Margin="10 0 0 0"/> 
      </StackPanel> 
      </ListBoxItem> 
     <ListBoxItem Name="Details" Grid.Row="1"> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock FontSize="20" FontFamily="Segoe MDL2 Assets" 
          Text="&#xE71B;"/> 
       <TextBlock FontSize="17" Text="Add Link" Margin="10 0 0 0"/> 
      </StackPanel> 
      </ListBoxItem> 
     </Grid> 
    </ListBox> 
+0

что вы пытаетесь достичь именно? – AlexDrenea

+0

Я хотел бы разместить на элементах панели управления в разных частях - сверху и снизу. Для этой цели я не хотел использовать радиокнопки. Я решил дать им, как изменить стиль кнопок трудно для меня. –

ответ

3

Если вы заселить ListBox управления путем добавления UIElement элементов сразу, UIElement добавляются в Items коллекции.

Для вашего сценария, вы на самом деле только добавили один Grid в коллекцию предметов ListBox, а затем в этом Grid, вы добавили еще два ListBoxItem, что ListBoxItem s не были непосредственно добавлены к коллекции Items, но контроль Grid одного элемента, управление Grid здесь больше похоже на управление root этого элемента. Это является причиной вашей проблемы:

вся область выделена listbox, а не конкретная строка listboxItem, помещенная в строку таблицы?

Таким образом, база на ваш код и ваш вопрос, я думаю, что вам нужно, это возможно, как это:

<ListBox x:Name="menu" SelectionMode="Single" SelectionChanged="Changed"> 
    <ListBoxItem Name="Main"> 
     <StackPanel Orientation="Horizontal"> 
      <TextBlock FontSize="20" FontFamily="Segoe MDL2 Assets" 
        Text="&#xE710;" /> 
      <TextBlock FontSize="17" Text="Add" Margin="10 0 0 0" /> 
     </StackPanel> 
    </ListBoxItem> 
    <ListBoxItem Name="Details" HorizontalAlignment="Left"> 
     <StackPanel Orientation="Horizontal"> 
      <TextBlock FontSize="20" FontFamily="Segoe MDL2 Assets" 
        Text="&#xE71B;" /> 
      <TextBlock FontSize="17" Text="Add Link" Margin="10 0 0 0" /> 
     </StackPanel> 
    </ListBoxItem> 
</ListBox> 

И я не уверен, что ваш третий RowDefinition для, если у вас есть вопросы по этому поводу, вы можете оставить комментарий. Лучше описать макет, который вы хотите достичь.