Текстовый блок WPF в сетке в ListView имеет неправильный размер?

StackOverflow https://stackoverflow.com/questions/1345716

Вопрос

У меня есть текстовый блок, который находится в сетке, которая является ItemTemplate для ListView.У меня есть элементы, чтобы они увеличивались при изменении размера окна, но я не могу понять, как ограничить текстовый блок этим размером.Я пытался сделать это с шириной в ColumnDefinition - если я установлю ширину на фиксированное число (скажем, 350), текст переносится правильно, но, очевидно, текстовый блок не расширяется при расширении окна - если я установлю ширину на "*", то появится горизонтальная полоса прокрутки, и текст убегает вправо и не переносится.

Есть какие-нибудь идеи, что я здесь делаю не так?

<GroupBox Header="Urgent Items" Margin="8,8,8,340" Name="UrgetItemsGroupBox">
    <Grid>
        <ListView Margin="6" Name="CriticalErrorsListView" HorizontalContentAlignment="Stretch" ItemsSource="{Binding Path=.}" MouseDoubleClick="CriticalErrorsListView_MouseDoubleClick">
            <ListView.Background>
                <LinearGradientBrush EndPoint="-0.192,0.529" StartPoint="0.998,0.519">
                    <GradientStop Color="#FFD2D2D2" Offset="0"/>
                    <GradientStop Color="#FFFFFFFF" Offset="1"/>
                </LinearGradientBrush>
            </ListView.Background>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Border Margin="2,2,2,3" BorderBrush="#FF847F6E" CornerRadius="10" BorderThickness="3">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="30" />
                                <ColumnDefinition Width="10" />
                                <ColumnDefinition Width="*" />
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="25" />
                                <RowDefinition Height="20" />
                                <RowDefinition Height="20" />
                                <RowDefinition Height="75" />
                            </Grid.RowDefinitions>
                            <Image Grid.Row="0" Grid.RowSpan="5" Grid.Column="0" Margin="2,2,2,2" Source="Images\errorIcon.png" />
                            <TextBlock Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="2" Margin="2,2,2,2" Text="{Binding Path=ApplicationName}" FontFamily="Calibri" FontWeight="Bold" FontSize="18" />
                            <TextBlock Grid.Row="1" Grid.Column="2" Margin="10,2,10,2" Text="{Binding Path=ErrorTime}" FontFamily="Calibri" FontSize="12" />
                            <TextBlock Grid.Row="2" Grid.Column="2" Margin="10,2,10,2" Text="{Binding Path=ErrorPerson}" FontFamily="Calibri" FontSize="12" />
                            <TextBlock Grid.Row="3" Grid.Column="2" Margin="2,2,2,2" Text="{Binding Path=ShortDescription}" TextWrapping="Wrap" />
                        </Grid>
                    </Border>                            
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </Grid>
</GroupBox>
Это было полезно?

Решение

Вы видите горизонтальную полосу прокрутки, потому что ListView использует ScrollViewer в своем шаблоне для разрешения прокрутки.Все, что вам нужно сделать, это сказать ScrollViewer, чтобы он не прокручивался по горизонтали.Просто установите ScrollViewer.Видимость горизонтальной полосы прокрутки= "Отключена" в вашем ListView.Таким образом, у вас получится что-то вроде этого:

<ListView Margin="6"
          ScrollViewer.HorizontalScrollBarVisibility="Disabled"
          Name="CriticalErrorsListView"
          HorizontalContentAlignment="Stretch"
          ItemsSource="{Binding Path=.}"
          MouseDoubleClick="CriticalErrorsListView_MouseDoubleClick">
     <!-- The rest goes here. -->
</ListView>

Надеюсь, это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top