<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 );
}
private void Button_Click( object sender, RoutedEventArgs e)
{
MessageBox.Show( "Test" );
}
}
|
本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/archive/2011/12/26/2227674.html,如需转载请自行联系原作者