积极答复者
Photoshop里的窗口内的小窗口要怎么实现?

问题
答案
全部回复
-
Hi 轮回的齿轮,从你的描述中,我觉得下面几种方式,你可以参考去实现类似Photoshop里的窗口内的小窗口。
1: Pop Up
XAML:
<StackPanel Margin="0,0,287,279"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <CheckBox Name="PCheckBox" Width="100" Margin="60,10,0,0" Content="Popup Window"/> </Grid> <Popup x:Name="popusBottom" IsOpen="{Binding ElementName=PCheckBox,Path=IsChecked}" PlacementTarget="{Binding ElementName=PCheckBox}" AllowsTransparency="True" PopupAnimation="Fade" HorizontalOffset="20" VerticalOffset="20" > <Canvas Margin="150" Background="Green"> <Canvas.RenderTransform> <RotateTransform x:Name="theTransform" /> </Canvas.RenderTransform> <WrapPanel > <WrapPanel.Background> <ImageBrush ImageSource="11.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>
XAML.CS:
public WPFPopup() { InitializeComponent(); LocationChanged += new EventHandler(RuntimePopup_LocationChanged); } void RuntimePopup_LocationChanged(object sender, EventArgs e) { try { var mi = typeof(Popup).GetMethod("UpdatePosition", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); mi.Invoke(popusBottom, null); }catch { } }
2: 使用 WPF.MDI.DLL(这是一个第三方DLL,也有其他第三方控件) 来实现多文档接口(MDI)
下面是一个简单的代码程序,你可以下载调试学习。
Best Regards,
Yohann Lu
- 已编辑 Yong LuMicrosoft contingent staff, Moderator 2016年10月18日 8:06