【发布时间】:2019-04-11 14:25:31
【问题描述】:
这是一个包含两个按钮的窗口的 XAML,两个按钮都被禁用。通过将按钮的内容设置为包含两个 TextBlock 的 StackPanel,其中之一已成为多行。
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Content="Single line" IsEnabled="False" />
<Button Grid.Column="1" IsEnabled="False">
<StackPanel>
<TextBlock HorizontalAlignment="Center">Double</TextBlock>
<TextBlock HorizontalAlignment="Center">Line</TextBlock>
</StackPanel>
</Button>
</Grid>
</Window>
这是我运行程序时在我的机器上的样子:
为什么一个按钮上的文本与另一个不同?在单行按钮上,文本颜色较淡。我希望两个按钮上的文本看起来相同。
另外:
我想纯粹在 XAML 中执行此操作。
文本必须在按钮内居中,如图所示(由框架自动设置,无需我通过插入不间断空格等手动将其隔开)。特别是,导致“Line”中“L”的左边缘与“Double”中的“D”左边缘垂直对齐的解决方案是不可接受的。 (因此在第二个按钮中使用 Content 属性但在文本中嵌入
&#xa;不是一个可行的解决方案,因为它会导致这种效果。)我不想将大量样式信息粘贴到我的 XAML 中。涉及粘贴禁用按钮外观定义的解决方案是不可接受的;我希望这两个按钮看起来就像我的操作系统上默认禁用的按钮应该是什么样子,而不必明确指定这意味着什么。声明性解决方案,包括指示 XAML 使用通常应用于禁用按钮中的文本的任何样式 - 这些都很好,只要我不必明确指定该样式的外观。
【问题讨论】:
标签: wpf xaml user-interface