将用户控件的内容绑定到该用户控件内的弹出窗口

时间:2019-03-13 18:09:41

标签: wpf vb.net

我正在尝试创建一个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绑定和模板不是很熟悉。

1 个答案:

答案 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>