2017-05-12 13 views
3

異なるTextBlockを持つWPFアプリケーションでListViewを作成しました。各行には複数のTextBlocksを含めることができますが、行に複数のテキストブロックが含まれている場合は、最初の行がその行に収まりますが、次のTextBlockは水平に並んでいません(画像参照)。私はこれの原因が何であるか考えていないので、誰かが何らかの明確化を提供してくれることを願っています。以下はWPF - ListView内のTextBlocksが水平に整列していません

enter image description here

XAMLコードです。

<ListView ItemsSource="{Binding DataContext.Mechanics, RelativeSource={RelativeSource AncestorType={x:Type Window}}, UpdateSourceTrigger=PropertyChanged}" Height="auto" Width="1330" 
      Grid.Row="2" Grid.ColumnSpan="13" BorderThickness="0" Background="#FFF2F2F2"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <Grid> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="18"/> 
        </Grid.RowDefinitions> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="22"/> 
         <ColumnDefinition Width="100"/> 
         <ColumnDefinition Width="1200"/> 
        </Grid.ColumnDefinitions> 
        <Label Content="{Binding MecID}" Grid.Column="0" Padding="0" FontSize="11" Background="#FFF2F2F2"/> 
        <Label Content="{Binding Name}" Grid.Column="1" Padding="0" FontSize="11" Margin="2, 0, 0, 0"/> 
        <ListView ItemsSource="{Binding MecJobs, UpdateSourceTrigger=PropertyChanged}" BorderThickness="0" Padding="-1" Height="18" Width="1200" Grid.Column="2" ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
          ScrollViewer.VerticalScrollBarVisibility="Disabled" Background="White"> 
         <ListView.ItemContainerStyle> 
          <Style TargetType="ListBoxItem"> 
           <Setter Property="Padding" Value="0"/> 
          </Style> 
         </ListView.ItemContainerStyle> 
         <ItemsControl.ItemTemplate> 
          <DataTemplate> 
           <Canvas> 
            <ListViewItem Width="{Binding EstimatedTimeWidth}" Canvas.Left="{Binding Margin}" Background="{Binding Color}" Height="18" 
               Padding="0" Margin="0" ScrollViewer.VerticalScrollBarVisibility="Disabled"> 
             <TextBlock TextAlignment="Center" Height="18" Padding="0" Margin="0"> 
              <TextBlock.Text> 
               <MultiBinding StringFormat="{}{0} - {1}"> 
                <Binding Path="RegNumber" /> 
                <Binding Path="CustomerName" /> 
               </MultiBinding> 
              </TextBlock.Text> 
             </TextBlock> 
            </ListViewItem> 
           </Canvas> 
          </DataTemplate> 
         </ItemsControl.ItemTemplate> 
        </ListView> 
       </Grid> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
     <ListView.ItemContainerStyle> 
      <Style TargetType="ListBoxItem"> 
       <Setter Property="Padding" Value="0"/> 
      </Style> 
     </ListView.ItemContainerStyle> 
    </ListView> 
</Grid> 

EDIT:ListViewがOrientation = "Horizo​​ntal"のStackpanelを含むように設定されていると、この問題は解決されました。

+0

あなたは水平を意味していますか? –

+0

絶対に。最初の行を見て、どのTextBlocksがTextBlocksごとに数ピクセルだけ "落ちる"のかを見てみましょう。 –

+0

ええ、それは垂直ではないですか? –

答えて

0

リストビューアイテムのスタイルをアイテムコンテナスタイルに追加すると、問題が解決されると思います。 セッターをリストボックスのアイテムスタイルに移動するだけではない場合。

<ListView ItemsSource="{Binding DataContext.Mechanics, RelativeSource={RelativeSource AncestorType={x:Type Window}}, UpdateSourceTrigger=PropertyChanged}" Height="auto" Width="1330" 
      Grid.Row="2" Grid.ColumnSpan="13" BorderThickness="0" Background="#FFF2F2F2"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <Grid> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="18"/> 
        </Grid.RowDefinitions> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="22"/> 
         <ColumnDefinition Width="100"/> 
         <ColumnDefinition Width="1200"/> 
        </Grid.ColumnDefinitions> 
        <Label Content="{Binding MecID}" Grid.Column="0" Padding="0" FontSize="11" Background="#FFF2F2F2"/> 
        <Label Content="{Binding Name}" Grid.Column="1" Padding="0" FontSize="11" Margin="2, 0, 0, 0"/> 
        <ListView ItemsSource="{Binding MecJobs, UpdateSourceTrigger=PropertyChanged}" BorderThickness="0" Padding="-1" Height="18" Width="1200" Grid.Column="2" ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
          ScrollViewer.VerticalScrollBarVisibility="Disabled" Background="White"> 
         <ListView.ItemContainerStyle> 
          <Style TargetType="ListBoxItem"> 
           <Setter Property="Padding" Value="0"/> 
          </Style> 
         </ListView.ItemContainerStyle> 
         <ItemsControl.ItemTemplate> 
          <DataTemplate> 
           <Canvas> 
            <ListViewItem Width="{Binding EstimatedTimeWidth}" Canvas.Left="{Binding Margin}" Background="{Binding Color}" Height="18" 
               Padding="0" Margin="0" ScrollViewer.VerticalScrollBarVisibility="Disabled"> 
             <TextBlock TextAlignment="Center" Height="18" Padding="0" Margin="0"> 
              <TextBlock.Text> 
               <MultiBinding StringFormat="{}{0} - {1}"> 
                <Binding Path="RegNumber" /> 
                <Binding Path="CustomerName" /> 
               </MultiBinding> 
              </TextBlock.Text> 
             </TextBlock> 
            </ListViewItem> 
           </Canvas> 
          </DataTemplate> 
         </ItemsControl.ItemTemplate> 
        </ListView> 
       </Grid> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
     <ListView.ItemContainerStyle> 
      <Style TargetType="ListBoxItem"> 
       <Setter Property="Padding" Value="0"/>      
      </Style> 
      <Style TargetType="ListViewItem"> 
       <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
      </Style> 
     </ListView.ItemContainerStyle> 
    </ListView> 
</Grid> 
+0

ありがとうございますが、それでも問題は解決しませんでした。 –

関連する問題