簡體   English   中英

在ListView WPF內的文本塊中居中

[英]Center text in textblock inside listview wpf

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

您在這里做錯了很多事情

  • 除非需要Grid,否則不需要GridView
  • 您不需要堆棧面板即可托管單個控件
  • 水平的堆棧面板將項目排列在列中而不是行中,從而使“中央對齊”毫無意義
  • 您尚未設置列表視圖的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>

這將集中您的文本

我不能完全確定您是否正確使用了Run,但是您沒有提供足夠的信息來確保任一方法,但是我懷疑您想要的是<LineBreak/>而不是<Run Text=" "/>

要么

如果這是嘗試構建網格的嘗試,那么您可能想要這樣的東西

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

暫無
暫無

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

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