<Window x:Class= "WPFPopup.RuntimePopup" xmlns= "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x= "http://schemas.microsoft.com/winfx/2006/xaml" Title= "RuntimePopup" Height= "800" Width= "800" Loaded= "Window_Loaded" > <StackPanel> <Button Height= "300" >T</Button> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <CheckBox Name= "PCheckBox" Width= "100" Margin= "60,10,0,0" Content= "Popup Window" /> <CheckBox Name= "PCheckBox2" Grid.Column= "1" Width= "100" Margin= "0,10,0,0" Content= "Popup Window" /> </Grid> <Button HorizontalAlignment= "Left" Width= "169" Margin= "10,10,0,0" > <Button.Triggers> <EventTrigger RoutedEvent= "Button.Click" > <BeginStoryboard> <Storyboard> <DoubleAnimation Storyboard.TargetName= "theTransform" Storyboard.TargetProperty= "(RotateTransform.Angle)" From= "0" To= "360" Duration= "0:0:5" AutoReverse= "True" /> </Storyboard> </BeginStoryboard> </EventTrigger> </Button.Triggers> Start Animation </Button> <Popup x:Name= "popusBottom" IsOpen= "{Binding ElementName=PCheckBox,Path=IsChecked}" PlacementTarget= "{Binding ElementName=PCheckBox}" AllowsTransparency= "True" PopupAnimation= "Fade" HorizontalOffset= "5" VerticalOffset= "-120" > <Canvas Margin= "150" Background= "Green" > <Canvas.RenderTransform> <RotateTransform x:Name= "theTransform" /> </Canvas.RenderTransform> <WrapPanel > <WrapPanel.Background> <ImageBrush ImageSource= "BG.png" /> </WrapPanel.Background> <Button Click= "Button_Click" Margin= "15" >Test</Button> <ListBox Height= "90" Margin= "15" > <ListBoxItem>Item1</ListBoxItem> <ListBoxItem>Item2</ListBoxItem> <ListBoxItem>Item3</ListBoxItem> <ListBoxItem>Item1</ListBoxItem> <ListBoxItem>Item2</ListBoxItem> <ListBoxItem>Item3</ListBoxItem> <ListBoxItem>Item1</ListBoxItem> <ListBoxItem>Item2</ListBoxItem> <ListBoxItem>Item3</ListBoxItem> </ListBox> </WrapPanel> </Canvas> </Popup> <Popup x:Name= "popusBottom2" IsOpen= "{Binding ElementName=PCheckBox2,Path=IsChecked}" PlacementTarget= "{Binding ElementName=PCheckBox2}" AllowsTransparency= "True" PopupAnimation= "Fade" HorizontalOffset= "5" VerticalOffset= "-120" > <Canvas Margin= "150" > <WrapPanel > <WrapPanel.Background> <ImageBrush ImageSource= "BG.png" /> </WrapPanel.Background> <Button Click= "Button_Click" Margin= "15" >Test</Button> <ListBox Height= "90" Margin= "15" > <ListBoxItem>Item1</ListBoxItem> <ListBoxItem>Item2</ListBoxItem> <ListBoxItem>Item3</ListBoxItem> <ListBoxItem>Item1</ListBoxItem> <ListBoxItem>Item2</ListBoxItem> <ListBoxItem>Item3</ListBoxItem> <ListBoxItem>Item1</ListBoxItem> <ListBoxItem>Item2</ListBoxItem> <ListBoxItem>Item3</ListBoxItem> </ListBox> </WrapPanel> </Canvas> </Popup> </StackPanel> </Window> |
C# code
public partial class RuntimePopup : Window { public RuntimePopup() { InitializeComponent(); LocationChanged += new EventHandler(RuntimePopup_LocationChanged); } void RuntimePopup_LocationChanged( object sender, EventArgs e) { var mi = typeof (Popup).GetMethod( "UpdatePosition" , System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); mi.Invoke(popusBottom, null );//控制popup随window移动而移动 } private void Button_Click( object sender, RoutedEventArgs e) { MessageBox.Show( "Test" ); } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!