2015-11-16 123 views
0

我有一個帶有兩個文本框的silverlight應用程序。當我專注於其中之一時,我想用我的「虛擬」鍵盤彈出窗口(作品)。但是,問題是我想關閉彈出窗口。我想用我的「X」按鈕關閉它(屏幕上的紅色)。我該怎麼做?我嘗試了一切 - 代表,INotifyProperyChanged。似乎沒有任何工作。在我的XAML代碼中,您可以看到我無法從MainPage訪問任何按鈕 - 僅從自定義控件的代碼中訪問。這是問題。無法使用自定義控件關閉silverlight彈出窗口

<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

回答

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」事件ated

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

然後在你的改變的MainPage的KeyboardControl的佈局是:

最後在MainPage.xaml.cs中:

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