2017-09-02 53 views
0

獨立網格劃分爲多個部分是這樣的:WPF - 中心標籤在網格單元格時,字體大小改變

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="1*"/> 
     <RowDefinition Height="1*" /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="1*"/> 
     <ColumnDefinition Width="1*"/> 
    </Grid.ColumnDefinitions> 
</Grid> 

現在創建其中心在單元格中的內容的標籤。

<Label Grid.Row="0" Grid.Column="0" Content="Hello World" HorizontalAlignment="Center" VerticalAlignment="Center"></Label> 

注意到它似乎是居中。

現在,標籤的字體更改爲任何比12大的越大越好,例如24

<Label FontSize="24" Grid.Row="0" Grid.Column="0" Content="Hello World" HorizontalAlignment="Center" VerticalAlignment="Center"></Label> 

看到文本不再居中。

如何將文本居中放入單元格中,同時考慮文本的大小?我不想爲每個工作的人定​​義一個保證金,但這需要反覆試驗,而且效率不高。

我正在尋找理想的純WPF/XAML解決方案,內置或定製。雖然在我看來,這個功能可能需要一個轉換器和一個自定義風格來定位一個不幸的標籤,因爲對於如此簡單的事情來說,這似乎是一個相當大的努力。

有沒有簡單的解決方案呢?

+0

恐怕你的問題是不可重現的:使用相同的XAML,文本保持居中(在左上角的單元格中),而不管字體大小...也許在你沒有列出的XAML中有其他的東西。嘗試包括一個完整的XAML列表,該列表重現了問題...注意'現在創建一個標籤,將網格中的內容居中。您的XAML絕不會將標籤居中在網格中,它會將其居中放置在左上方的單元格中。 –

+0

實際上你是對的,它似乎在我提供的文本居中的例子中。我發現我的問題實際上是這樣的,如果這是合理的,那麼行的高度不夠大,無法正確居中。 如果您要採用相同的示例,並將RowDefinition Height設置爲較小的值,以使字體可見。你會看到文本不再居中,但實際上在單元格中降低了。試試這個值。顯然在這種情況下,標籤可以垂直居中在網格單元中,但事實並非如此。 我的意思是不是細胞,會編輯。 – Jetompki

回答

0

您描述的行爲是由標籤內的Padding(默認情況下不爲零)引起的。

嘗試:

<Label Padding="0" FontSize="30" Grid.Row="0" Grid.Column="0" Content="Hello World" HorizontalAlignment="Center" VerticalAlignment="Center"> 

注:如果該行的高度太小,以適應字號,文字的可見部分將是上部,不是中心的一部分。 我想這對於渲染器試圖在這種情況下居中文本是安靜的。

+0

基於我的例子,我相信這是正確的,我在找什麼。謝謝,我會將此標記爲已接受。 – Jetompki

0

我不明白你的問題。但我認爲這是你想要的代碼行。我只是在代碼中添加了col span屬性。

< Label FontSize="24" Grid.Row="0" Background="AliceBlue" Grid.ColumnSpan="2" Content="Hello World" HorizontalAlignment="Center" VerticalAlignment="Center">< /Label> 
相關問題