2009-08-28 5 views
1

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

Любая идея, что я делаю неправильно здесь?

<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> 

ответ

2

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

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

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

+0

безупречный! Я использовал ScrollViewer.HorizontalScrollBarVisibility, но не сам ListView. Спасибо, кучи! – ChrisHDog