2

我正在尝试为我的一个学校项目申请,它几乎结束了,但现在最后我遇到了问题。

我有一个列表框,并且我有一个在该列表框中加载文本的字符串数组。很少有字符串很长,文本会出现在屏幕之外。没有文字换行或类似的东西?请告诉我如何使文本转到第二行而不溢出屏幕?

这是我的测试代码,与我的项目类似。它具有相同的 ListBox 和两个带有长单词的字符串。

xml:

<phone:PhoneApplicationPage
x:Class="Test_Listbox.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
shell:SystemTray.IsVisible="True">

<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>



    <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
        <TextBlock Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"         Margin="12,0"/>
        <TextBlock Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
    </StackPanel>

    <!--ContentPanel - place additional content here-->
    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">

        <ListBox Name="ListboxTest"></ListBox>

    </Grid>


    </Grid>

</phone:PhoneApplicationPage>

还有我的cs文件:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;


namespace Test_Listbox
{
public partial class MainPage : PhoneApplicationPage
{
    // Constructor
    public MainPage()
    {
        InitializeComponent();

        ListboxTest.Items.Add(" List box 1 List box 1 List box 1 List box 1 List box 1 List box 1 List box 1 List box 1 List box 1");
        ListboxTest.Items.Add(" List box 2 List box 2 List box 2 List box 2 List box 2 List box 2 List box 2 List box 2 List box 2");

    }
  }
}
4

1 回答 1

6

我建议使用模板和绑定。

例如:

<ListBox Name="ListboxTest" ItemsSource={Binding}>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding}" TextWrapping="Wrap"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

在你的代码后面:

List<String> ItemsListProperty{ set; get; }

public MainPage()
{
    InitializeComponent();

    this.DataContext = ItemsListProperty;
}

您需要定义 ItemsListProperty,但它比将项目直接添加到 ListBox 控件要好。

于 2013-11-04T19:18:35.320 回答