布局有什么问题XAML
What's wrong with the layout XAML
告诉我为什么在使用应用程序代码时,分配的是整个区域的列表框,而不是放置在 table 行中的特定行 listboxItem?
<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=""/>
<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=""/>
<TextBlock FontSize="17" Text="Add Link" Margin="10 0 0 0"/>
</StackPanel>
</ListBoxItem>
</Grid>
</ListBox>
如果您通过直接添加 UIElement
项来填充 ListBox
控件,则 UIElement
会添加到 Items
集合中。
对于你的场景,你实际上只添加了一个 Grid
到 ListBox
的 Items 集合,然后在这个 Grid
中,你添加了另外两个 ListBoxItem
, ListBoxItem
并没有直接添加到Items集合中,而是添加到一个Item的Grid
控件中,这里的Grid
控件更像是这个Item的root
控件.这是您遇到问题的原因:
the whole area is allocated listbox, rather than a specific line listboxItem placed in a table row?
所以,根据你的代码和你的问题,我想你需要的可能是这样的:
<ListBox x:Name="menu" SelectionMode="Single" SelectionChanged="Changed">
<ListBoxItem Name="Main">
<StackPanel Orientation="Horizontal">
<TextBlock FontSize="20" FontFamily="Segoe MDL2 Assets"
Text="" />
<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="" />
<TextBlock FontSize="17" Text="Add Link" Margin="10 0 0 0" />
</StackPanel>
</ListBoxItem>
</ListBox>
我不确定你的第三个 RowDefinition
是干什么用的,如果你对此有疑问,可以发表评论。最好描述一下你想要实现的布局。
告诉我为什么在使用应用程序代码时,分配的是整个区域的列表框,而不是放置在 table 行中的特定行 listboxItem?
<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=""/>
<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=""/>
<TextBlock FontSize="17" Text="Add Link" Margin="10 0 0 0"/>
</StackPanel>
</ListBoxItem>
</Grid>
</ListBox>
如果您通过直接添加 UIElement
项来填充 ListBox
控件,则 UIElement
会添加到 Items
集合中。
对于你的场景,你实际上只添加了一个 Grid
到 ListBox
的 Items 集合,然后在这个 Grid
中,你添加了另外两个 ListBoxItem
, ListBoxItem
并没有直接添加到Items集合中,而是添加到一个Item的Grid
控件中,这里的Grid
控件更像是这个Item的root
控件.这是您遇到问题的原因:
the whole area is allocated listbox, rather than a specific line listboxItem placed in a table row?
所以,根据你的代码和你的问题,我想你需要的可能是这样的:
<ListBox x:Name="menu" SelectionMode="Single" SelectionChanged="Changed">
<ListBoxItem Name="Main">
<StackPanel Orientation="Horizontal">
<TextBlock FontSize="20" FontFamily="Segoe MDL2 Assets"
Text="" />
<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="" />
<TextBlock FontSize="17" Text="Add Link" Margin="10 0 0 0" />
</StackPanel>
</ListBoxItem>
</ListBox>
我不确定你的第三个 RowDefinition
是干什么用的,如果你对此有疑问,可以发表评论。最好描述一下你想要实现的布局。