listview wpf中的textblock中的中心文本

时间:2016-09-15 11:36:04

标签: wpf xaml

我的ListView中的TextBlock有问题,我无法用文本块填充整行,并在中心设置文本。如果在Wpf中可以这样做?

这是我的listView代码

   <ListView.View>
            <GridView>
                <GridViewColumn>
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                            <TextBlock>
                                <Run Text="{Binding cityName, Mode=OneWay}"/>
                                <Run Text=" "/>
                                <Run Text="{Binding strFullName, Mode=OneWay}"/>
                                <Run Text=" "/><Run Text=" "/>
                                <Run Text="{Binding strHouseNo, Mode=OneWay}"/>
                                <Run Text=" "/>
                             </TextBlock>
                            </StackPanel>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
            </GridView>
        </ListView.View>
    </ListView>

1 个答案:

答案 0 :(得分:0)

你这里做了很多错事

  • 除非您需要Grid
  • ,否则不需要GridView
  • 您不需要堆叠面板来托管单个控件
  • 水平stackpanel将列中的项排列为行而不是行 无论如何,“中央居住”毫无意义
  • 你没有设置listview的Horizo​​ntalContentAlignment,这个 默认为左,你需要“中心”或“拉伸”
  • 您尚未设置TextBlock的TextAlignment

将所有这些放在一起,你得到了这个

<ListView HorizontalContentAlignment="Stretch">
    <ListView.ItemTemplate>
        <DataTemplate>
            <TextBlock TextAlignment="Center">
               <Run Text="{Binding cityName, Mode=OneWay}"/>
               <Run Text=" "/>
               <Run Text="{Binding strFullName, Mode=OneWay}"/>
               <Run Text=" "/><Run Text=" "/>
               <Run Text="{Binding strHouseNo, Mode=OneWay}"/>
               <Run Text=" "/>
            </TextBlock>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

哪会集中你的文字

我不完全确定您使用的是正确运行,但是您没有提供足够的信息以确定无论哪种方式,但我怀疑您需要<LineBreak/>而不是<Run Text=" "/>

OR

如果这是尝试构建网格,那么你可能想要这样的东西

<ListView >
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.View>
        <GridView>
            <GridViewColumn>
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding cityName, Mode=OneWay}" TextAlignment="Center"/>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
            <GridViewColumn>
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding FullName, Mode=OneWay}" TextAlignment="Center"/>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
            <GridViewColumn>
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding strHouseNo, Mode=OneWay}" TextAlignment="Center"/>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>