我以this为例,制作了圆形的玻璃按钮,并以最小的影响从中制作了一个用户控件。第三个按钮是用户控制中的我按钮,其他所有按钮-示例中的原始按钮:(抱歉,声誉不足以使图像以舒适的方式放置)
但是在我将图像添加到Control之后,我看到了
将图像添加到第二个按钮的方式相同
<Button Style="{StaticResource GlassButton}" Width="50" Height="50" Background="#FF1D5BBA" Margin="10">
<Image Width="40" Height="35" Source="images\vista_flag.png"/>
</Button>
<GlassButtonControl:GlassButton Width="70" Height="70" Margin="0">
<Image Width="40" Height="35" Source="images\vista_flag.png"/>
</GlassButtonControl:GlassButton>
我在做什么错了?
EDIT1-> EDIT3
EDIT2:
彼得·杜尼奥(Peter Duniho)要求,用于重现大小写的最少代码
UserControl项目的XAML。具有彩色背景的按钮:
<UserControl x:Class="GreenButtonControl.GreenButton"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:GreenButtonControl"
mc:Ignorable="d"
d:DesignHeight="400" d:DesignWidth="400">
<Grid>
<Button Width="50" Height="50" Background="Green" Margin="10"/>
</Grid>
</UserControl>
UserControl项目的C#:
using System.Windows.Controls;
namespace GreenButtonControl
{
public partial class GreenButton : UserControl
{
public GreenButton()
{
InitializeComponent();
}
}
}
Window XAML(图像本身应更改为具有透明性的任何图像):
<GreenButtonControl:GreenButton Width="50" Height="50">
<Image Width="40" Height="40" Source="images\vista_flag.png"/>
</GreenButtonControl:GreenButton>
问题在于UserControl消失,并且透明背景下显示了窗口背景。
EDIT3:
我现在发现可以避免这种行为的解决方案:
<Grid Width="70" Height="70">
<GlassButtonControl:GlassButton/>
<Image Width="40" Height="40" Source="images\vista_flag.png"/>
</Grid>
但是,这带来了新的问题来捕捉触发器“ MouseOver”和其他触发器...
<Grid Width="50" Height="50">
<GreenButtonControl:GreenButton Width="Auto" Height="Auto"/>
<Image Width="40" Height="40" IsHitTestVisible="False" Source="images\vista_flag.png"/>
</Grid>
这是目前所需行为的完美决定
但是问题仍然是。为什么任何内部元素使UserControl不可见?