画布背景颜色不显示

我创建了一个UserControl来显示使用弹出TextBlock一个内Canvas 。 一切似乎都工作正常,除了画布的背景色。 它被渲染为透明的,不管我怎么努力。 我也尝试添加一个Rectangle并填充它,但不工作或者。 下面的代码:

<UserControl 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:Custom="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" xmlns:ic="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions" xmlns:System="clr-namespace:System;assembly=mscorlib" mc:Ignorable="d" x:Class="PopupText.CanvasPopup" d:DesignWidth="456" d:DesignHeight="129"> <StackPanel x:Name="LayoutRoot" Orientation="Horizontal"> <!--This button toggles the visibility of the popup--> <Button x:Name="ActivateButton" HorizontalAlignment="Left" VerticalAlignment="Top" BorderThickness="0" Click="OnActivateButtonClicked"> <Image Source="/pushpin.png" Width="36" Height="36" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="Fill" Margin="0" /> </Button> <Canvas x:Name="PopupContainer" HorizontalAlignment="Left" VerticalAlignment="Top" Width="{Binding Width, ElementName=PopupText}" Height="{Binding Height, ElementName=PopupText}" Visibility="Collapsed"> <Canvas.Background> <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> <GradientStop Color="Black" Offset="0" /> <GradientStop Color="#7FA79797" Offset="1" /> </LinearGradientBrush> </Canvas.Background> <Rectangle Canvas.Left="0" Canvas.Top="0" RadiusX="20" RadiusY="20" Width="{Binding Width, ElementName=PopupText}" Height="{Binding Height, ElementName=PopupText}"> <Rectangle.Fill> <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> <GradientStop Color="Black" Offset="0" /> <GradientStop Color="#7F67749D" Offset="1" /> </LinearGradientBrush> </Rectangle.Fill> <Rectangle.Stroke> <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> <GradientStop Color="Black" Offset="0" /> <GradientStop Color="#7FC89B9B" Offset="1" /> </LinearGradientBrush> </Rectangle.Stroke> </Rectangle> <TextBlock x:Name="PopupText" Text="A really long line of text that will either overflow or wrap" TextWrapping="Wrap" Width="350" Canvas.Left="0" Canvas.Top="0" /> </Canvas> </StackPanel> </UserControl>

感谢您的帮助!

--------------解决方案-------------

它看起来像你想的大小结合Canvas的实际大小TextBlock不是在设计时指定的值。

在这种情况下,使用这样的绑定:

Width="{Binding ActualWidth, ElementName=PopupText}"
Height="{Binding ActualHeight, ElementName=PopupText}">

您的渐变出现,如果你手动设置高度工作。 这样看来,你的身高元件结合,你期望它也不能正常工作。

我测试你的画布孤立地高度300矩形高度200并没有太大的差别是什么美观的文本块的高度了。 无论是渐变工作正常,画布和矩形。

您在画布的高度属性和矩形结合的文本块,但文本块具有“自动”height属性。 XAML不能分配的高度值,因为这个原因这些元素。 尝试设置TextBlock的高度手动而不是自动。 这会影响到其他两个元素的时候了。

PS如果从文本块中删除WIDTH =“350”,然后在画布和矩形将有0高度和宽度堆栈面板上。 您需要手动设置文本块的高度和宽度属性,因为其他两个要素依赖于它。

分类:WPF 时间:2015-03-15 人气:6
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.032 (s). 10 q(s)