我在将WPF程序从“ Visual Studio Express 2013 for Windows Desktop ”迁移到“ Visual Studio Community 2015 ”时遇到问题。
我的原始WPF程序是在“ VS Express 2013 for Windows Desktop ”中创建的。它依赖于能够将Grid嵌入Button中。在那个网格上(在按钮内),我会放置矩形形状。它在 VS Express 2013 中运行良好,但在 VS Community 2015 中无效。
以下示例是在 VS Express 2013 中创建的。它正确显示红色边框矩形...和内部带有白色十字的黑色按钮。
<Window x:Class="TestErrors.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="200" Width="200">
<Canvas>
<Rectangle
Stroke="Red"
StrokeThickness="10"
Width="50"
Height="50"
Canvas.Left="75"
Canvas.Top="20"/>
<Button
Width="0"
Height="0"
Canvas.Left="100"
Canvas.Top="100">
<Canvas>
<Rectangle
Fill="Black"
Width="30"
Height="30"
Canvas.Left="-15"
Canvas.Top="-15"/>
<Rectangle
Fill="White"
Width="4"
Height="20"
Canvas.Left="-2"
Canvas.Top="-10"/>
<Rectangle
Fill="White"
Width="20"
Height="4"
Canvas.Left="-10"
Canvas.Top="-2"/>
</Canvas>
</Button>
</Canvas>
</Window>
VS Express 2013 的上图正确无误...正确显示带有白色十字的黑色按钮。
以下示例中 Visual Studio Community 2015 中的相同XAML仅显示红色矩形。它没有像我预期的那样工作。
<Window x:Class="TestErrors.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"
xmlns:local="clr-namespace:TestErrors"
mc:Ignorable="d"
Title="MainWindow" Height="200" Width="200">
<Canvas>
<Rectangle
Stroke="Red"
StrokeThickness="10"
Width="50"
Height="50"
Canvas.Left="75"
Canvas.Top="20"/>
<Button
Width="0"
Height="0"
Canvas.Left="100"
Canvas.Top="100">
<Canvas>
<Rectangle
Fill="Black"
Width="30"
Height="30"
Canvas.Left="-15"
Canvas.Top="-15"/>
<Rectangle
Fill="White"
Width="4"
Height="20"
Canvas.Left="-2"
Canvas.Top="-10"/>
<Rectangle
Fill="White"
Width="20"
Height="4"
Canvas.Left="-10"
Canvas.Top="-2"/>
</Canvas>
</Button>
</Canvas>
</Window>
里面有白色十字架的黑色按钮在哪里?改变了什么来破坏我的原始代码?
答案 0 :(得分:1)
您的按钮宽度和高度设置为0.更改值以满足您的需要或选择不带按钮的方法。
答案 1 :(得分:0)
我要回答我自己的问题。 我找到了问题的解决方案。 显然旧版本的WPF使用以下代码
<Button
Width="0"
Height="0"
旧版本将这些“0”设置视为“自动”。 但现在你必须专门使用“自动”或“自动”这个词......“0”将不再提供所需的结果。
<Button
Width="Auto"
Height="Auto"
<Button
Width="auto"
Height="auto"
上述两个方法都解决了这个问题。