#c# #wpf
#c# #wpf
Вопрос:
Я создаю опцию обратной связи в своем приложении WPF. В главном окне есть TabControl и строка состояния ниже. В строке состояния есть кнопка, которая показывает FeedBackView с анимацией.
Итак, FeedBackView — это не окно, это UserControl, который содержится в Canvas Border .
В приложении есть некоторые опции, которые открывают другие модальные окна, поэтому в этот момент форма обратной связи недоступна. Я попытался установить Panel.zIndex = 1, и это не помогло. Итак, есть ли какой-нибудь способ установить форму самым верхним в приложении?
<UserControl x:Class="UPR.Wpf.App.Views.StatusBarContentView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:v="clr-namespace:UPR.Wpf.App.Views.FeedBack"
xmlns:vm="clr-namespace:UPR.Wpf.App"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800" Loaded="UserControl_Loaded">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="../../Styles/Buttons.xaml"/>
</ResourceDictionary.MergedDictionaries>
<BooleanToVisibilityConverter x:Key="xBooleanToVisibilityConverter"/>
</ResourceDictionary>
</UserControl.Resources>
<Canvas>
<Button Name="FeedBackButton"
Click="FeedBackButton_Click"
Loaded="FeedBackButton_Loaded"
BorderThickness="0.5"
BorderBrush="Gray"
Foreground="White"
FontWeight="Bold"
FontSize="15"
Height="32"
Canvas.Bottom="-17"
Canvas.Right="-150">
</Button>
<Border BorderBrush="Gray"
Panel.ZIndex="1"
BorderThickness="2"
Name="border"
Margin="-350,0,-178,-9"
Background="White"
Canvas.Bottom="24"
Canvas.Right="-5"
SizeChanged="border_SizeChanged">
<v:FeedBackView/>
</Border>
</Canvas>
</UserControl>
Комментарии:
1. «Итак, FeedBackView — это не окно», тогда почему это не окно?
2. Правильно ли я понимаю, что вы хотите, чтобы обратная связь была интерактивной при отображении модальных окон? Я думаю, вам нужно будет добавить usercontrol обратной связи в модальную форму, чтобы разрешить нажатие оттуда…
3. Да, я имею в виду это. Итак, ваш вариант — единственный способ? @Schwarzie
4. Просто природа модальных окон такова, что они блокируют все взаимодействия пользовательского интерфейса с другими окнами.
5. Я немного подумал об альтернативе, но они очень быстро становятся взломанными.