问题
how to display data horizontally in a list box. I had used the properties for reading data from the text box and i have to display these multiple data in to a list box (in one line, horizontally) . my code is shown below..
private void SaveButton_Click(object sender, RoutedEventArgs e)
{
LoadData();
}
private void LoadData()
{
List<ItemList> MyList = new List<ItemList>();
MyList.Add(new ItemList { Subject = subjectText.Text });
MyList.Add(new ItemList { Createdtext = CreatedText.Text });
MyList.Add(new ItemList { Calendartext = CalendarText.Text });
MyList.Add(new ItemList { TimeText = TimeText.Text });
MyList.Add(new ItemList { AssignedText = AssignedText.Text });
MyList.Add(new ItemList { DescriptionText = DescriptText.Text });
MyList.Add(new ItemList { TargetdateText = TargetDateText.Text });
MyListBox.ItemsSource = MyList;
}
The property for getting data is:
public class ItemList
{
private string _subject;
private string _createdtext;
private string _calendartext;
private string _timeText;
private string _assignedText;
private string _descriptionText;
private string _targetdateText;
public string Subject
{
get
{
return _subject;
}
set
{
_subject = value;
}
}
public string Createdtext
{
get
{
return _createdtext;
}
set
{
_createdtext = value;
}
}
public string Calendartext
{
get
{
return _calendartext;
}
set
{
_calendartext = value;
}
}
public string TimeText
{
get
{
return _timeText;
}
set
{
_timeText = value;
}
}
public string AssignedText
{
get
{
return _assignedText;
}
set
{
_assignedText = value;
}
}
public string DescriptionText
{
get
{
return _descriptionText;
}
set
{
_descriptionText = value;
}
}
public string TargetdateText
{
get
{
return _targetdateText;
}
set
{
_targetdateText = value;
}
}
}
My XAML code for List box is shown below
<ListBox x:Name="MyListBox" ItemsSource="ItemList" Grid.ColumnSpan="6" HorizontalAlignment="Left" Grid.Column="1" Grid.Row="8" Width="600" Height="96">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" >
<Grid ShowGridLines="True" Width="700">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="25" />
</Grid.RowDefinitions>
<TextBlock Text="{Binding Subject}" Grid.Column="0"/>
<TextBlock Text="{Binding Createdtext}" Grid.Column="1" />
<TextBlock Text="{Binding Calendartext}" Grid.Column="2" />
<TextBlock Text="{Binding Timetext}" Grid.Column="3"/>
<TextBlock Text="{Binding AssignedText}" Grid.Column="4"/>
<TextBlock Text="{Binding DescriptionText}" Grid.Column="5" />
<TextBlock Text="{Binding TargetdateText}" Grid.Column="6"/>
</Grid>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
but i didn't get the output in one line. it displayed in diagonally.. What are the changes required for getting correct output..
回答1:
<ListBox x:Name="MyListBox" ItemsSource="ItemList" Grid.ColumnSpan="6" HorizontalAlignment="Left" Grid.Column="1" Grid.Row="8" Width="600" Height="96">
...
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
...
</ListBox>
try this
回答2:
Have a look at the MSDN page for the ItemsPanel property. It has an example demonstrating how to create a horizontal list box.
来源:https://stackoverflow.com/questions/1221811/display-multiple-data-horizontally