我有列表框。當我點擊列表框項目時,我必須在彈出窗口中顯示項目信息但點擊後不會關閉。我在itemsselected事件中創建彈出。如何處理彈出關閉?如何在Silverlight中關閉彈出窗口?
回答
我不太清楚「點擊邊」是什麼意思,因爲彈出窗口以模態方式進行操作。
您應該將您的彈出窗口設置爲ChildWindow。然後你可以處理Closed事件。
下面是一個非常簡單的示例,它顯示了主窗口中列表框中的選定字符串。
首先在主窗口:
<UserControl x:Class="PopupTest.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<StackPanel Orientation="Vertical">
<ListBox x:Name="SomeList" Width="100" Height="100" />
<TextBlock x:Name="DialogResult" Width="100" />
</StackPanel>
</Grid>
在代碼隱藏,彈出被觸發列表中選擇更改時。只需設置一個關閉的處理程序。在這個例子中,我簡單地把選擇的列表項放入一個文本塊中,然後在關閉彈出框時,我只是將對話結果放在主窗口的文本塊中(以顯示用戶推送正確還是取消)。
public MainPage()
{
InitializeComponent();
SomeList.SelectionChanged += new SelectionChangedEventHandler(SomeList_SelectionChanged);
SomeList.Items.Add("one");
SomeList.Items.Add("two");
SomeList.Items.Add("three");
}
void SomeList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var popup = new SomePopup();
popup.Closed += new EventHandler(popup_Closed);
popup.ChosenItem.Text = (string)SomeList.SelectedItem;
DialogResult.Text = "";
popup.Show();
}
void popup_Closed(object sender, EventArgs e)
{
var popup = sender as SomePopup;
if (popup.DialogResult == true)
DialogResult.Text = "Ok";
else
DialogResult.Text = "Cancel";
}
彈出當用戶按下確定或取消,因爲DialogResult的值,在彈出的代碼隱藏設置關閉:
private void OKButton_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = true;
}
private void CancelButton_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = false;
}
彈出窗口不是模態的,ComboBox的下拉列表是Popup。 – AnthonyWJones 2010-03-05 14:15:11
我沒有說他們是。我說他們以模態的方式行事。當您在ChildWindow上調用Show()時,在彈出窗口彈起時背景不可點擊。 – 2010-03-05 14:26:05
聽起來像你混淆ChildWindow與彈出這些是兩個不同的東西。 ChildWindow是一個模板化控件,其中包含一個覆蓋面板,用於防止其他控件接收輸入。 Popup是一個輕量級的控制容器,當IsOpen爲真時,它被放置在指定偏移量的內容區上方。其餘的用戶界面仍然會收到輸入。 – AnthonyWJones 2010-03-05 15:20:21
一種方法是創建一個透明背景畫布您可以在打開彈出窗口的同時顯示,並附加到鼠標向下事件以關閉彈出窗口。像這樣的: -
的XAML: -
<Grid x:Name="LayoutRoot" Background="White" >
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Popup x:Name="MyPopup" Closed="MyPopup_Closed" HorizontalOffset="100" VerticalOffset="100" Opened="Popup_Opened">
<ListBox x:Name="PopupChild" MaxHeight="300" LostFocus="PopupChild_LostFocus">
<sys:String>Hello World</sys:String>
</ListBox>
</Popup>
<Button Content="Open Popup" Grid.Row="1" Click="Button_Click" />
<Canvas x:Name="PopupOpen" Visibility="Collapsed" Background="Transparent" Grid.RowSpan="2" MouseLeftButtonDown="PopupOpen_MouseLeftButtonDown" />
</Grid>
代碼: -
private void Button_Click(object sender, RoutedEventArgs e)
{
MyPopup.IsOpen = true;
}
private void Popup_Opened(object sender, EventArgs e)
{
PopupOpen.Visibility = Visibility.Visible;
}
private void PopupChild_LostFocus(object sender, RoutedEventArgs e)
{
MyPopup.IsOpen = false;
}
private void PopupOpen_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
MyPopup.IsOpen = false;
}
private void MyPopup_Closed(object sender, EventArgs e)
{
PopupOpen.Visibility = Visibility.Collapsed;
}
需要注意的是它的重要,如果你的彈出包含可以接受,你也處理LostFocus
焦點的控制。
這與我的問題類似。看看How to dismiss a popup in Silverlight when clicking outside of the control?。我在我的解決方案中發佈了一個擴展方法,這對於在彈出窗口之外點擊時彈出窗口非常有幫助。
- 1. 彈出窗口:當彈出彈出窗口時關閉彈出
- 2. 如何打開彈出窗口並關閉彈出窗口?
- 3. 彈出窗口關閉
- 4. 關閉彈出窗口
- 5. 關閉AngularStrap彈出窗口
- 6. 要關閉彈出窗口
- 7. MessageDialog關閉彈出窗口
- 8. Javascript:關閉彈出窗口
- 9. 彈出窗口不關閉
- 10. 彈出窗口不關閉
- 11. 如何關閉彈出窗口?
- 12. 如何關閉模式彈出窗口?
- 13. Javascript:彈出窗口如何關閉?
- 14. 如何關閉彈出式窗口?
- 15. 在Android中關閉彈出窗口
- 16. programmaticaly在ubuntu中關閉彈出窗口
- 17. 如何使用jQuery中的彈出窗口關閉colorbox窗口
- 18. 如何關閉父窗口中的彈出窗口?
- 19. 如何關閉彈出式窗口中的按鈕的自舉彈出窗口?
- 20. 如何在點擊彈出窗口上的按鈕時關閉彈出窗口?
- 21. 如何在關閉該彈出窗口的彈出窗口上製作按鈕
- 22. 如何關閉彈出窗口當我在彈出窗口外單擊
- 23. 如何在javascript中關閉\隱藏彈出窗體窗口?
- 24. 關閉彈出窗口按鈕上的彈出窗口
- 25. 關閉實際彈出窗口內的Bootstrap彈出窗口?
- 26. 關閉彈出窗口,如onBackPressed
- 27. 如何打開彈出窗口並在關閉彈出窗口後在父窗口中完全回發
- 28. 如何關閉彈出窗口並重定向父窗口
- 29. 如何通過點擊關閉按鈕關閉彈出窗口?
- 30. 將鼠標懸停在打開的彈出窗口上,將鼠標移出關閉彈出窗口,彈出窗口應該不會關閉彈出窗口
你是如何創建彈出?如果它是通過子窗口,你應該能夠關閉它。請澄清。 – funwithcoding 2010-03-05 13:18:00