无法关闭带有自定义控件的silverlight弹出窗口

时间:2015-11-16 16:52:56

标签: c# wpf class silverlight popup

我有一个带有两个文本框的silverlight应用程序。当我专注于其中一个时,我想要弹出我的"虚拟"键盘出现(作品)。但是,问题是当我想要关闭弹出窗口时。我希望能够用我的" X"按钮(屏幕上的红色)。我该怎么做?我尝试了一切 - 委托,INotifyProperyChanged。似乎没什么用。在我的XAML代码中,您可以看到我无法访问MainPage中的任何按钮 - 仅来自自定义控件的代码。这就是问题所在。

<Grid x:Name="LayoutRoot" Background="#DB1E1E1E" Margin="0,0,-89,-114">

    <TextBox x:Name="txt1"
        HorizontalAlignment="Left" Height="23"
        Margin="10,10,0,0" TextWrapping="Wrap"
        Text="TextBox" VerticalAlignment="Top"
        Width="398" GotFocus="txt1_GotFocus"/>
    <TextBox
        HorizontalAlignment="Left"
        Height="23"
        Margin="10,82,0,0"
        TextWrapping="Wrap"
        Text="TextBox"
        VerticalAlignment="Top"
        Width="398"/>

    <Popup x:Name="popup" IsOpen="True" AllowDrop="True">
        <Grid x:Name="theBack" Background="Black" Margin="80,196,114,24">
            <Keyboard:KeyboardControl x:Name="keyboard" Margin="0,-10,0,10"/>
        </Grid>
    </Popup>

    <Button x:Name="btn"
        Content="Button"
        HorizontalAlignment="Left"
        Margin="508,114,0,0"
        VerticalAlignment="Top"
        Width="75"
        Click="btn_Click"/>

</Grid>

enter image description here

1 个答案:

答案 0 :(得分:0)

没有绑定:

在KeyboardControl.xaml.cs中为您的控件定义一个自定义处理程序,并为单击关闭按钮定义一个方法:

public event RoutedEventHandler CloseClick;

private void ButtonX_Click(object sender, RoutedEventArgs e)
{
    if (CloseClick != null)
        CloseClick(sender, e);
}

然后在KeyboardControl.xaml中使用先前创建的方法分配“X”按钮的“Click”事件

<Button Content="X" Click="ButtonX_Click"/>

然后在您的MainPage中更改KeyboardControl的布局:

最后在MainPage.xaml.cs中:

private void keyboard_CloseClick(object sender, RoutedEventArgs e)
{
    popup.IsOpen = false;
}