2009-11-29 4 views
4

Grid에 표시하려는 일부는 text data입니다. 가운데 열은 다른 두 개의 너비의 두 배로 격자의 전체 너비를 차지합니다. text은 길기 때문에 포장해야합니다. 내가 일을 할 수없는 것 (그리고 과거의 다른 쿼리에서 다른 사람들이 비슷한 문제를 겪고 있음을 알 수있다.)은 단어 줄 바꿈과 작업 할 그리드 크기 조정을 얻고있다. 내가 가지고있는 것은 :텍스트 배치, 격자 및 별 크기 조정

<Window.Resources> 
    <local:DTData x:Key="dtData" /> 
</Window.Resources> 

<StackPanel DataContext="{StaticResource dtData}"> 
    <ListBox ItemsSource="{Binding}" ScrollViewer.HorizontalScrollBarVisibility="Disabled"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
     <Grid> 
      <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="2*"/> 
      <ColumnDefinition Width="*" /> 
      </Grid.ColumnDefinitions> 
      <Border x:Name="a" Grid.Column="0" Margin="4"/> 
      <TextBlock Margin="4" Grid.Column="0" TextWrapping="Wrap" 
        Text="{Binding A}" Width="{Binding ActualWidth, ElementName=a }" MinWidth="100"/> 
      <Border x:Name="b" Grid.Column="1" Margin="4"/> 
      <TextBlock Margin="4" Grid.Column="1" TextWrapping="Wrap" 
        Text="{Binding B}" Width="{Binding ActualWidth, ElementName=b }" MinWidth="100"/> 
      <Border x:Name="c" Grid.Column="2" Margin="4"/> 
      <TextBlock Margin="4" Grid.Column="2" TextWrapping="Wrap" 
        Text="{Binding C}" Width="{Binding ActualWidth, ElementName=b }" MinWidth="100"/> 
     </Grid> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
    </ListBox> 
</StackPanel> 

이 작업을 텍스트 줄 바꿈을 강제로 WPF TextBox and Scroll behavior에서 Border 트릭을 사용하지만 열의 폭이 설정 한 최소 폭 또는 긴 단어 큰 경우 중 하나입니다.

칼럼이 그리드의 폭에 맞도록 강제하는 방법을 알고 있습니까?

+0

가능한 중복 재현하기 위해, 당신은 모든 데이터를 제공하지 않은 것도있을 수 있습니다 [어떻게 WPF 그리드 열 내용을 클립하는 스타로 정의합니까를?] (http://stackoverflow.com/questions/25567474/how-do-i-get-wpf-grid-columns-defined-with-star-to-clip-content) – Starceaker

답변

1

정말이 텍스트를 감싸고 싶습니까? 아니면 목표는 텍스트 트리밍입니까? 내가 kaxaml에서 다음 XAML을 입력 할 때, 중간 열에서 텍스트가 완벽하게 포장되어 있기 때문에 내가 부탁 해요 : 필요한 경우

<Page 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Grid> 
    <StackPanel> 
    <ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled" Width="350"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
     <Grid> 
      <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="2*"/> 
      <ColumnDefinition Width="*" /> 
      </Grid.ColumnDefinitions> 
      <TextBlock Margin="4" Grid.Column="0" TextWrapping="Wrap" 
        Text="Binding A" MinWidth="100"/> 
      <TextBlock Margin="4" Grid.Column="1" TextWrapping="Wrap" 
        Text=" Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco" MinWidth="100"/> 
      <TextBlock Margin="4" Grid.Column="2" TextWrapping="Wrap" 
        Text="Binding C" MinWidth="100"/> 
     </Grid> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
    <TextBlock Text="" /> 
    <TextBlock Text=""/> 
    <TextBlock Text=""/> 
    </ListBox> 
    </StackPanel> 
    </Grid> 
</Page> 

텍스트를 다듬을 경우에, 다만 TextTrimming="CharacterEllipsis"TextWrapping="NoWrap" 및 TextTrimming을 설정합니다.

당신이 설명하는 문제 ...의

+0

고마워,하지만 그건 세 가지 중 두 가지를 충족 요구 사항 : 올바르게 래핑되고 열은 모눈의 너비까지 확장됩니다. 하지만 열의 너비는 실제 데이터에 따라 가변적입니다. 각 행에 대해 동일한 데이터를 사용하기 때문에 너의 정렬이 매우 수월합니다. 내가 할 수 없었던 것은 텍스트를 줄 바꿈하고 목록 상자의 너비와 열 너비가 각 행에 대해 일관되도록 열을 가져 오는 것입니다. – amaca

+0

당신이하려는 것을 보여주는 그림을 추가 할 수 있습니까? 나는 아직도 그것을 얻을 수 없다. .. – Anvaka

관련 문제