我正在尝试创建一个UserControl
,该按钮由一个按钮组成,当单击该按钮时,会弹出一个信息弹出窗口。按钮的设计和样式在UserControl
中定义,并且不会更改,Content
的{{1}}应该使用Popup
的{{1}}属性本身。
我当前的控制方法是:
Content
使用它的代码应如下所示:
UserControl
这会导致单击按钮时弹出窗口以正确的大小显示(根据指定的<UserControl x:Class="InfoPopup"
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"
mc:Ignorable="d"
d:DesignHeight="30" d:DesignWidth="30">
<UserControl.Template>
<ControlTemplate TargetType="UserControl">
<Grid>
<ToggleButton Name="button">
<Label Content="i"/>
</ToggleButton>
<Popup IsOpen="{Binding IsChecked, ElementName=button}" StaysOpen="False">
<ContentPresenter />
</Popup>
</Grid>
</ControlTemplate>
</UserControl.Template>
</UserControl>
),但实际的弹出内容只是(字面上)一个黑框。
我想念什么?我对WPF绑定和模板不是很熟悉。
答案 0 :(得分:0)
弹出窗口的内容为黑色,因为前景和背景为黑色(默认情况下)。
您可以在弹出窗口上设置AllowsTransparency =“ True”(如果您希望背景透明)。
<Popup IsOpen="{Binding IsChecked, ElementName=button}" StaysOpen="False" AllowsTransparency="True">
或者,执行类似的操作,在带有您选择的背景的ContentPresenter周围放置一个网格,如下所示:
<Grid Background="White">
<ContentPresenter />
</Grid>
如果您想要默认的背景色,请尝试以下操作:
<Grid Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}">
<ContentPresenter />
</Grid>