Windows Phone: текст в текстовом блоке не отображается полностью

Проблема решена! Во всяком случае, я только что понял проблему. Я сделал .Trim() для значений, и, что удивительно, их можно обернуть. Спасибо и извините за беспокойство. =)

Я делаю привязку данных к моему текстовому блоку в сетке.

Однако некоторые тексты отображаются не полностью. Ошибка

Я попробовал обтекание текстом и установил максимальную ширину для моего текстового блока. Но ни один из них не работал.

РЕДАКТИРОВАТЬ: Привет еще раз. Я заметил, что когда я изменил текст текстового блока вручную с помощью таких кодов, как

 txtDesc.Text = "This is a job for Stackers. If you like stacking, please contact me. 

Обтекание текстом действительно работает. Значит, текст результата привязки данных каким-то образом не может быть перенесен?

Код XAML для моего текстового блока.

 <TextBlock Name="Description"  Grid.Row="4" Text="{Binding Description}" FontSize="     {StaticResource PhoneFontSizeSmall}" Height="auto" Width="220" Margin="0,0,0,0" TextWrapping="Wrap" HorizontalAlignment="Left" VerticalAlignment="Top" MaxWidth="220"></TextBlock>

Любая помощь здесь?

<!--LayoutRoot is the root grid where all page content is placed-->
    <Grid x:Name="LayoutRoot">
        <Grid.Background>
            <ImageBrush Stretch="Fill" ImageSource="images/SmallLogoNTitle.png"/>
        </Grid.Background>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition/>
        </Grid.RowDefinitions>

        <!--TitlePanel contains the name of the application and page title-->
        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
            <TextBlock x:Name="ApplicationTitle" Style="{StaticResource PhoneTextNormalStyle}"/>
            <TextBlock x:Name="PageTitle" 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">
            <toolkit:ListPicker ItemsSource="{Binding}" Name="lpkTypeOfService" Margin="0,116,12,0" Height="65" VerticalAlignment="Top" HorizontalAlignment="Right" Width="210" SelectionChanged="lpkTypeOfService_SelectionChanged">

            </toolkit:ListPicker>
            <ListBox Margin="8,210,8,26" Name="listBox1" Width="450">
            <ListBox.ItemTemplate>
                    <DataTemplate>

                        <Grid ShowGridLines="True">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="50"/>
                                <RowDefinition Height="50"/>
                                <RowDefinition Height="30"/>
                                <RowDefinition Height="30"/>
                                <RowDefinition Height="auto"/>
                                <RowDefinition Height="60"/>
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="300"/>
                                <ColumnDefinition Width="150"/>
                            </Grid.ColumnDefinitions>
                            <TextBlock HorizontalAlignment="Left" Grid.Row="0" Grid.Column="0" Name="Date" Text="{Binding Date}" FontSize="{StaticResource PhoneFontSizeLarge}"></TextBlock>
                            <TextBlock HorizontalAlignment= "Left" Grid.Row="1" Grid.Column="0" Name="Creator" Text="{Binding CreatorID}" FontSize="{StaticResource PhoneFontSizeLarge}"></TextBlock>
                            <TextBlock Name="Type" Grid.Row="2" Text="{Binding Type}" FontSize="{StaticResource PhoneFontSizeSmall}"></TextBlock>
                            <TextBlock Name="Amount" Grid.Row="3" Text="{Binding Amount}" FontSize="{StaticResource PhoneFontSizeSmall}"></TextBlock>
                            <TextBlock Name="Description"  Grid.Row="4" Text="{Binding Description}" FontSize="{StaticResource PhoneFontSizeSmall}" Height="auto" Width="220" Margin="0,0,0,0" TextWrapping="Wrap" HorizontalAlignment="Left" VerticalAlignment="Top" MaxWidth="220"></TextBlock>
                            <Button Content="Apply" Height="70" Width="140" Name="btn1" Click="btn_Click" Grid.Row="5" Grid.Column="1"></Button>
                        </Grid>
                    </DataTemplate>
                </ListBox.ItemTemplate>
                </ListBox>
            <TextBlock Height="65" HorizontalAlignment="Left" Margin="12,116,0,0" Name="textBlock1" Text="Find Service :" VerticalAlignment="Top" Width="216" FontSize="36" />
        </Grid>
    </Grid>

person Lawrence Wong    schedule 15.04.2013    source источник
comment
Можете попробовать убрать Height=auto и MaxWidth?   -  person Fabrice    schedule 15.04.2013
comment
Всем привет. Я удалил Height=auto и MaxWidth. Это все еще не работает. знак равно   -  person Lawrence Wong    schedule 15.04.2013
comment
Я написал ответ, который касается этой ситуации: Ответ StackFlow   -  person Olorunfemi Ajibulu    schedule 13.10.2016


Ответы (3)


Это происходит из-за плохой / чрезмерно сложной архитектуры макета и того, как ваши объекты позиционируют друг друга. Можете попробовать что-то подобное для вашего DataTemplate

    <DataTemplate>

       <Grid ShowGridLines="True">
          <Grid.RowDefinitions>
             <RowDefinition Height="50"/>
             <RowDefinition Height="50"/>
             <RowDefinition Height="30"/>
             <RowDefinition Height="30"/>
             <RowDefinition Height="Auto"/>
             <RowDefinition Height="60"/>
          </Grid.RowDefinitions>
          <Grid.ColumnDefinitions>
<!-- Don't worry, you already had your 450 Width set on the parent -->
             <ColumnDefinition Width="*"/>
             <ColumnDefinition Width="Auto"/>
          </Grid.ColumnDefinitions>

             <TextBlock Name="Date" Text="{Binding Date}" FontSize="{StaticResource PhoneFontSizeLarge}"/>
             <TextBlock Name="Creator" Grid.Row="1" Text="{Binding CreatorID}" FontSize="{StaticResource PhoneFontSizeLarge}"/>
             <TextBlock Name="Type" Grid.Row="2" Text="{Binding Type}" FontSize="{StaticResource PhoneFontSizeSmall}"/>
             <TextBlock Name="Amount" Grid.Row="3" Text="{Binding Amount}" FontSize="{StaticResource PhoneFontSizeSmall}"/>
             <TextBlock Name="Description" Grid.Row="4" Text="{Binding Description}" FontSize="{StaticResource PhoneFontSizeSmall}" TextWrapping="Wrap"/>
             <Button Name="btn1" Click="btn_Click" Grid.Row="5" Grid.Column="1" Content="Apply" Height="70" Width="140" Margin="5,0"/>

          </Grid>

    </DataTemplate>

Также ради более чистого xaml помните, что такие вещи, как Margin="0", Grid.Column="0", HorizontalAlignment="Left" и т. д., являются свойствами зависимостей по умолчанию, поэтому нет необходимости устанавливать их для каждого отдельного объекта. Даже в случае необходимости вы можете применить их как Setter к TargetType в родительском Object.Resources и не устанавливать их для каждого отдельного объекта. Еще один совет: не полагайтесь на кучу запутанных случайных полей и т. д. для создания макета. Лучше сделать это правильно с первого раза, чем искать несоответствия между кучей взаимозависимых маленьких «исправлений».

Я не проверял это, но должно работать нормально, если у вас нет чего-то еще, что-то толкает вещи. Надеюсь это поможет.

person Chris W.    schedule 15.04.2013
comment
Всем привет. Я только что попробовал ваш код. Это не работает. Посмотрите на мои обновленные комментарии, выделенные жирным шрифтом выше. Я считаю, что текст с привязкой к данным по какой-то причине не может быть текстовым. Любые идеи? - person Lawrence Wong; 15.04.2013
comment
Вы случайно не читаете их из другого файла, который вы анализируете, сохраняя пробелы в строке? Что-то вроде XML-файла, например, с line xml:space="preserve"? - person Chris W.; 15.04.2013
comment
Всем привет. Я читаю значения из базы данных. Во всяком случае, я только что понял проблему. Я сделал .Trim() для значений, и, что удивительно, их можно обернуть. Спасибо и извините за беспокойство. знак равно - person Lawrence Wong; 15.04.2013
comment
Ну вот, иногда просто нужно немного вдохновения, чтобы поискать проблему в другом месте. Я бы все же предложил немного почистить макет, рад, что вы нашли свое решение. :П - person Chris W.; 15.04.2013

Можете ли вы отключить горизонтальную прокрутку в элементе управления списком?

ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
person Fabrice    schedule 15.04.2013
comment
‹ListBox Margin=8,210,8,26 Name=listBox1 Width=450 ScrollViewer.HorizontalScrollBarVisibility=Disabled › Вы это имеете в виду? Я сделал это, и это не сработало. знак равно - person Lawrence Wong; 15.04.2013
comment
И если вы замените это ‹RowDefinition Height=auto/› на ‹RowDefinition Height=*/› - person Fabrice; 15.04.2013

Используйте VerticalAlignment="Stretch" вместо VerticalAlignment="Top". Таким образом, текстовый блок будет растягиваться до высоты строки.

person Marius Bughiu    schedule 15.04.2013
comment
Привет. Я изменил на VerticalAlignment=Stretch, но он все еще не работает. ‹TextBlock Name=Description Grid.Row=4 Text={Binding Description} FontSize={StaticResource PhoneFontSizeSmall} Width=220 Margin=0,0,0,0 TextWrapping=Wrap HorizontalAlignment=Left VerticalAlignment=Stretch›‹/TextBlock› - person Lawrence Wong; 15.04.2013
comment
Не могли бы вы также добавить это в свой список? ‹ListBox.ItemContainerStyle› ‹Style TargetType=ListBoxItem› ‹Setter Property=HorizontalContentAlignment Value=Stretch›‹/Setter› ‹/Style› ‹/ListBox.ItemContainerStyle› - person Marius Bughiu; 15.04.2013
comment
Куда мне его положить? Могу ли я отправить вам мой исходный код по электронной почте? Как мне вам сказать? - person Lawrence Wong; 15.04.2013
comment
Поместите его сразу после ‹ListBox Margin=8,210,8,26 Name=listBox1 Width=450› - person Marius Bughiu; 15.04.2013
comment
Привет еще раз. Я это сделал. Но это все еще не работает. Есть еще решения? знак равно - person Lawrence Wong; 15.04.2013
comment
Только что попробовал ваш XAML с фиктивным классом, который я создал, и для меня он работает нормально. Ничего не менял в XAML. Так что, возможно, проблема в вашей строке. Может быть, он содержит какие-то нежелательные символы, какие-то лишние разрывы строк? - person Marius Bughiu; 15.04.2013
comment
Во всяком случае, я только что понял проблему. Я сделал .Trim() для значений, и, что удивительно, их можно обернуть. Спасибо и извините за беспокойство. знак равно - person Lawrence Wong; 15.04.2013