То, что у вас там, прекрасно, вам просто нужно установить поле, чтобы дать некоторый промежуток между вашими предметами.
10px поле на 2-м TextBlock
<ListBox Height="595" HorizontalAlignment="Left" Margin="9,6,0,0" Name="lst_Today" VerticalAlignment="Top" Width="441" ScrollViewer.VerticalScrollBarVisibility="Visible" SelectionChanged="lst_Today_SelectionChanged" ItemsSource="{Binding}" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}"></TextBlock>
<TextBlock Margin="10,0,0,0" Text="{Binding StartTime}"></TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Вы также можете использовать Grid вместо StackPanel. Если вы создаете определение столбца и не используете столбец, он будет работать так же, как и Margin, но будет более явным.
<ListBox Height="595" HorizontalAlignment="Left" Margin="9,6,0,0" Name="lst_Today" VerticalAlignment="Top" Width="441" ScrollViewer.VerticalScrollBarVisibility="Visible" SelectionChanged="lst_Today_SelectionChanged" ItemsSource="{Binding}" >
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="10" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Name}"></TextBlock>
<TextBlock Grid.Column="2" Text="{Binding StartTime}"></TextBlock>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
А что касается добавления заголовка, вы можете добавить фиктивный элемент или просто использовать обычный элемент управления над всем значением ListBox
. Это зависит от того, хотите ли вы прокрутить элементы или нет.
Если вы хотите, чтобы он прокручивался, либо добавьте фиктивный элемент, который является заголовком, либо отключите прокрутку на ListBox
, добавьте заголовок над ListBox
и оберните их обоих в ScrollViewer
.