У меня есть такой виджет:
<UserControl x:Class="Example.Controls.ControlPanel"
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"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<StackPanel x:Name="panel" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Button Margin="0,0,30,0"/>
<Button Margin="0,0,30,0"/>
<Button Margin="0,0,0,0"/>
</StackPanel>
</Grid>
</UserControl>
Этот виджет располагается в главном окне таким образом:
<controls:ControlPanel x:Name="controlPanel" Margin="0,0,0,45" Height="140" VerticalAlignment="Bottom"/>
Мне нужно реализовать следующий функционал, который должен находиться в классе ControlPanel:
- Изначально виджет сдвинут вниз на свою высоту, то есть скрыт за пределами окна.
- Если виджет скрыт и курсор находится на нижней границе окна программы или вышел за его пределы вниз, то нужно показать виджет (плавно сдвинуть вверх на его высоту).
- Если виджет виден и курсор вышел за пределы виджета вверх, то нужно скрыть виджет (плавно сдвинуть вниз на его высоту).
Как из класса виджета отследить позицию курсора в окне приложения (за пределами виджета), как отследить смещение курсора на нижнюю границу окна и за нее?
Borderили аналог), растянутый на всю ширину и с высотой 5-10 пунктов, дальше вешаете триггер наMouseOverпо которому запускаете анимацию появления, все, задача решена. – EvgeniyZ Dec 08 '23 at 11:43<Border Background = "Transparent" />), далее создаете для него стиль, в котором прописываете триггер, который будет запускать анимацию "появления" (в документации хороший пример). Высчитывать что-то, отслеживать, вам не нужно. – EvgeniyZ Dec 08 '23 at 12:23