Я пытаюсь добиться следующего:WPF всплывающее обыкновение близко даже с StaysOpen = «ложь»
- пользователя вызывает контекстное меню в сетке.
- Пользователь выбирает элемент контекстного меню, который затем открывает всплывающее окно и отображает некоторую информацию.
- Когда пользователь нажимает в другом месте приложения, а не во всплывающем окне, всплывающее окно закрывается.
Все работает нормально, пока не придет к закрытию всплывающего окна.
От поиска в другом месте я знаю, что мне нужно, чтобы Staysopen был установлен в false (это он) Я также прочитал, что лучший способ - привязать значение IsOpen к свойству в модели представления и установить его привязку к 2 (также сделано)
В качестве побочного примечания я обнаружил, что если я добавлю текстовое поле и щелкнув внутри окна, когда я затем выйду за пределы всплывающего окна, он закрывается по желанию.
Еще одна вещь, которую я безуспешно пытался использовать в качестве обходного пути, заключалась в том, чтобы программно настроить фокус клавиатуры на текстовое поле, чтобы получить желаемую «автоклинирующую» функциональность.
Вот код:
XAML -
<Popup Name="PredictionsPopup" Height="200" Width="200" AllowsTransparency="false" StaysOpen="False" IsOpen="{Binding DisplaySummaryPopup, Mode=TwoWay}">
<StackPanel Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}">
<TextBlock Text="here is some stuff" />
<TextBox Name="hiddenBox" Text="moo"/>
</StackPanel>
</Popup>
Codebehind, который устанавливает свойство на ViewModel при выборе пункта меню.
private void CurrentPredicitions_OnClick(object sender, RadRoutedEventArgs e)
{
PredictionsPopup.Placement = PlacementMode.MousePoint;
ViewModel.DisplaySummaryPopup = true;
}
ViewModel недвижимость
public bool? DisplaySummaryPopup
{
get
{
return this.displaySummaryPopup;
}
set
{
this.displaySummaryPopup = value;
RaisePropertyChanged(() => this.DisplaySummaryPopup);
}
}
Пожалуйста, дайте мне знать, если вам нужно больше деталей.