簡體   English   中英

WPF - ListView中的TextBlocks不是水平對齊的

[英]WPF - TextBlocks in ListView are not horizontal aligned

我在具有不同TextBlocks的WPF應用程序中創建了一個ListView。 每行可以包含多個TextBlock,但是當一行包含多個文本塊時,第一行適合該行,但下面的TextBlocks不會水平對齊(參見圖片)。 我不知道這可能是什么原因,所以我希望有人可以提供一些澄清。

在此輸入圖像描述

下面是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>

編輯:當ListView設置為包含一個Orientation =“Horizo​​ntal”的Stackpanel時,問題解決了。

我想如果你將listview項的樣式添加到項容器樣式,你的問題就會得到修復。 如果不只是將setter移動到列表框項目樣式。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM