XAML中的WPF程序问题未正确显示按钮

时间:2016-02-27 20:12:36

标签: wpf visual-studio xaml

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

enter image description here

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>

enter image description here

里面有白色十字架的黑色按钮在哪里?改变了什么来破坏我的原始代码?

2 个答案:

答案 0 :(得分:1)

您的按钮宽度和高度设置为0.更改值以满足您的需要或选择不带按钮的方法。

答案 1 :(得分:0)

我要回答我自己的问题。 我找到了问题的解决方案。 显然旧版本的WPF使用以下代码

 <Button
      Width="0"
      Height="0"

旧版本将这些“0”设置视为“自动”。 但现在你必须专门使用“自动”或“自动”这个词......“0”将不再提供所需的结果。

 <Button
      Width="Auto"
      Height="Auto"

 <Button
      Width="auto"
      Height="auto"

上述两个方法都解决了这个问题。