我有一個Combobox
定義在一個ItemsControl.
的數據模板中。這個ComboBox
有一個定義在其中的Button
。在Button_Click
事件中,應顯示Popup
。這Popup
包含一個自定義UserControl
其中有一些控制內定義。如何防止Popup失去焦點?
以下是代碼之前,我解釋我的問題:
<ComboBox x:Name="cb" HorizontalAlignment="Center" Grid.Column="2" Width="140" Visibility="{Binding HasCombobox, Converter={StaticResource BoolToVis}}">
<ComboBox.ItemsSource>
<CompositeCollection>
<CollectionContainer Collection="{Binding Source={StaticResource cvs}}" />
<ComboBoxItem>
<Button Click="Button_Click" Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" Content="{x:Static prop:Resources.INSERT_BTN}"/>
</ComboBoxItem>
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
這是Button_Click
事件:
private void Button_Click(object sender, RoutedEventArgs e)
{
Button s = sender as Button;
var popup = new System.Windows.Controls.Primitives.Popup();
popup.AllowsTransparency = true;
popup.Child = new myCustomView();
popup.PlacementTarget = s;
popup.Placement = System.Windows.Controls.Primitives.PlacementMode.Top;
popup.IsOpen = true;
popup.StaysOpen = true;
}
的問題是,當我點擊任何內部myCustomView
的Popup
定義的控件失去焦點並關閉。我如何強制它保持打開狀態?
編輯1:
由於myCustomView
都有自己ViewModel
我試圖通過這樣的視圖模型內的IsOpen
屬性綁定到一個布爾值,以破解Popup
保持開放:
popup.DataContext = myCustomViewModel;
Binding b = new Binding();
b.Source = myCustomViewModel;
b.Path = new PropertyPath("stayOpened");
b.Mode = BindingMode.TwoWay;
b.UpdateSourceTrigger = UpdateSourceTrigger.Default;
BindingOperations.SetBinding(popup, Popup.IsOpenProperty, b);
// BindingOperations.SetBinding(popup, Popup.StaysOpenProperty, b); tried both IsOpened and StaysOpen
但是焦點開關仍然會殺死我的Popup
。
這個問題和你以前的問題有什麼區別? – mm8
因爲現在我有一個關於失去焦點的具體問題。前面的問題是關於如何實際顯示Popup內部的視圖。在我看來,這個問題的目標被改變了。 –
@ mm8它的工作。你可以在這裏發佈這個部分 –