2012-06-13 3 views
2

Может кто-нибудь дать мне представление о том, почему Wrapping не работает в этих текстовых блоках? я просто не знаю, почему, я изменил все мои stackpanels к сетям, чтобы избежать бесконечного пространства проблемы, но до сих пор она не работает ...Textblock textwrapping не работает

<Border x:Name="SummaryRightSideContainerBorder" Grid.Column="1" 
     Margin="10,10,10,10" BorderBrush="Black" 
     BorderThickness="1"> 
    <ContentControl x:Name="SummaryRightSideContainerContentControl" Content="{Binding SelectedItem, ElementName=SummaryTreeView}"> 
     <ContentControl.Resources> 
      <DataTemplate DataType="{x:Type ViewModelsProject:ProjectViewModel}"> 
       <StackPanel> 
        <TextBlock Text="Displaying Project DataContract stuff..." /> 
       </StackPanel> 
      </DataTemplate> 
      <DataTemplate DataType="{x:Type ViewModelsProject:SequenceViewModel}"> 
       <StackPanel> 
        <TextBlock Text="Displaying Sequence DataContract stuff..." /> 
       </StackPanel> 
      </DataTemplate> 
      <DataTemplate DataType="{x:Type ViewModelsProject:GroupViewModel}"> 
       <StackPanel> 


        <DataGrid Margin="10" AutoGenerateColumns="False" 
            Background="Transparent" BorderThickness="0" 
            CanUserAddRows="False" 
            CellStyle="{DynamicResource dgCellStyle}" 
            ColumnHeaderStyle="{DynamicResource dgHeader}" 
            DataContext="{Binding ElementName=SummaryTreeView, 
                 Path=SelectedItem}" 
            GridLinesVisibility="None" 
            ItemsSource="{Binding Standards}" 
            Padding="0" RowHeaderWidth="0" ScrollViewer.HorizontalScrollBarVisibility="Disabled"> 
         <DataGrid.Resources> 
          <Style x:Key="dgHeader" TargetType="{x:Type DataGridColumnHeader}"> 
           <Setter Property="Template"> 
            <Setter.Value> 
             <ControlTemplate TargetType="{x:Type DataGridColumnHeader}"> 
              <TextBlock Width="{TemplateBinding Width}" 
                  Padding="5" 
                  Text="{TemplateBinding Content}" 
                  TextAlignment="Left"> 
                <TextBlock.Background> 
                 <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
                  <GradientStop Offset="0.0" Color="#373638" /> 
                  <GradientStop Offset="1.0" Color="#77797B" /> 
                 </LinearGradientBrush> 
                </TextBlock.Background> 
              </TextBlock> 
             </ControlTemplate> 
            </Setter.Value> 
           </Setter> 
           <Setter Property="OverridesDefaultStyle" Value="True" /> 
           <Setter Property="Background" Value="Green" /> 
           <Setter Property="Foreground" Value="White" /> 
           <Setter Property="FontSize" Value="12" /> 
           <Setter Property="Background"> 
            <Setter.Value> 
             <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
              <GradientStop Offset="0.0" Color="#373638" /> 
              <GradientStop Offset="1.0" Color="#77797B" /> 
             </LinearGradientBrush> 
            </Setter.Value> 
           </Setter> 
          </Style> 
          <Style x:Key="dgCellStyle" TargetType="{x:Type DataGridCell}"> 
           <Style.Triggers> 
            <Trigger Property="DataGridCell.IsSelected" Value="True"> 
             <Setter Property="Background" Value="White" /> 
             <Setter Property="Foreground" Value="Black" /> 
             <Setter Property="BorderThickness" Value="0" /> 
            </Trigger> 
           </Style.Triggers> 
          </Style> 
         </DataGrid.Resources> 
         <DataGrid.Columns> 
          <DataGridTemplateColumn Header="Standards"> 
           <DataGridTemplateColumn.CellTemplate> 
            <DataTemplate> 


             <Grid Margin="5"> 
              <Grid.RowDefinitions> 
               <RowDefinition /> 
               <RowDefinition /> 
              </Grid.RowDefinitions> 
              <TextBlock Grid.Row="0" Text="{Binding Path=StepMaster.Description}" VerticalAlignment="Center" FontWeight="SemiBold"/> 
              <Grid Grid.Row="1"> 
               <Grid.RowDefinitions> 
                <RowDefinition /> 
                <RowDefinition /> 
                <RowDefinition /> 
               </Grid.RowDefinitions> 
               <Grid.ColumnDefinitions> 
                <ColumnDefinition Width="Auto" /> 
                <ColumnDefinition Width="*" /> 
               </Grid.ColumnDefinitions> 
               <TextBlock Grid.Row="0" Grid.Column="0" Text="Standard: " VerticalAlignment="Top"/> 
               <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Path=Standard}" Margin="5,0,0,0" VerticalAlignment="Top" TextWrapping="Wrap"/> 

               <TextBlock Grid.Row="1" Grid.Column="0" Text="Details: " VerticalAlignment="Top"/> 
               <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Path=Details}" Margin="5,0,0,0" VerticalAlignment="Top" TextWrapping="Wrap"/> 

               <TextBlock Grid.Row="2" Grid.Column="0" Text="Comments: " VerticalAlignment="Top"/> 
               <TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Path=Comments}" Margin="5,0,0,0" VerticalAlignment="Top" TextWrapping="Wrap"/> 
              </Grid> 
             </Grid> 

            </DataTemplate> 
           </DataGridTemplateColumn.CellTemplate> 
          </DataGridTemplateColumn> 
         </DataGrid.Columns> 
        </DataGrid> 


       </StackPanel> 
      </DataTemplate> 
      <DataTemplate DataType="{x:Type ViewModelsProject:StepViewModel}"> 
       <UniformGrid Rows="3"> 
        <TextBlock Margin="10" FontWeight="DemiBold" 
           Text="Standards" /> 
        <TextBlock Margin="10" FontWeight="DemiBold" 
           Text="Standards Details" /> 
        <StackPanel Orientation="Vertical"> 
         <DataGrid Margin="10" AutoGenerateColumns="False" 
          <Another data grid is here /> 
         </DataGrid> 
        </StackPanel> 
       </UniformGrid> 
      </DataTemplate> 
     </ContentControl.Resources> 
    </ContentControl> 
</Border> 
+0

Установите все значение RowDefinition Height = "Auto". Попробуйте жесткую ширину Не как окончательный ответ, а чтобы посмотреть, что произойдет. – Paparazzi

+0

Теперь он обтекает, используя , но я не хочу помещать фиксированную ширину в этот столбец, потому что пользователь может захотеть расширить окно, и это будет выглядеть «смешно» ... –

+0

Я полагаю, это может быть вызвано '' попытаться изменить эту 'Width' на' * 'или определенное значение как * Carlos H *. –

ответ

3

Оказывается, единственный способ, чтобы сделать эту работу, чтобы использовать свойства непосредственно в DataGrid:

MaxWidth="{Binding ElementName=SummaryRightSideContainerBorder, Path=ActualWidth}" ColumnWidth="*" 

MaxWidth используется так, что сам Datagrid не превышает границы его контейнера, а ColumnWidth используется так, чтобы столбцы использовали 100% пространства, доступного в datagrid.

Ответ Блэма поставил меня на правильный путь, чтобы найти решение.

1

В качестве ответа вам необходимо установить второй столбец

<ColumnDefinition Width="*"/> 

так что это ограничение. * означает размер контейнера. Сейчас он растет вне контейнера (экран)

первая колонка авто ОК

+0

Я думал, что это сработает, но это не так, как только я изменил ширину второй колонки с «200» на «*», она снова перестала обертывать ... Возможно, это TemplateColumn нарушает нормальное поведение сеток, но я Не уверен. –

+0

Опубликуйте свой текущий xaml – Paparazzi

+0

Я только что разместил свой полный xaml, как мне дать баллы человеку здесь? –

Смежные вопросы