2010-03-17 1 views
1

Скажем, у нас есть стандартное WPF-приложение, и я хочу показать некоторые элементы интерфейса слева, кроме основного окна приложения.WPF отбрасывает элемент

Есть ли способ пойти «за пределы» окна и показать визуальный элемент с кнопками слева, кроме моего главного окна? Если есть, можете ли вы указать мне учебник/видео/подсказку, как это сделать?

ответ

2

Не уверен, что вы хотите сделать все это в коде или в XAML, но используя Popup, вы можете сделать что-то вроде этого?

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    x:Class="ButtonsOnPopup.MainWindow" 
    x:Name="Window" 
    Title="MainWindow" 
    Width="400" Height="300"> 
<Window.Resources> 
    <Storyboard x:Key="OnMouseLeftButtonDown1"> 
     <BooleanAnimationUsingKeyFrames BeginTime="0" Storyboard.TargetName="popup" Storyboard.TargetProperty="(Popup.IsOpen)"> 
      <DiscreteBooleanKeyFrame KeyTime="0" Value="True"/> 
     </BooleanAnimationUsingKeyFrames> 
    </Storyboard> 
    <Storyboard x:Key="OnClick1"> 
     <BooleanAnimationUsingKeyFrames BeginTime="0" Storyboard.TargetName="popup" Storyboard.TargetProperty="(Popup.IsOpen)"> 
      <DiscreteBooleanKeyFrame KeyTime="0" Value="True"/> 
      <DiscreteBooleanKeyFrame KeyTime="00:00:00.2" Value="False"/> 
     </BooleanAnimationUsingKeyFrames> 
    </Storyboard> 
</Window.Resources> 
<Window.Triggers> 
    <EventTrigger RoutedEvent="UIElement.MouseLeftButtonDown" SourceName="textBlock"> 
     <BeginStoryboard Storyboard="{StaticResource OnMouseLeftButtonDown1}"/> 
    </EventTrigger> 
    <EventTrigger RoutedEvent="ButtonBase.Click" SourceName="button"> 
     <BeginStoryboard x:Name="OnClick1_BeginStoryboard" Storyboard="{StaticResource OnClick1}"/> 
    </EventTrigger> 
</Window.Triggers> 

<Grid x:Name="LayoutRoot"> 
    <Popup x:Name="popup" Placement="Left"> 
     <StackPanel Background="White"> 
      <TextBlock Text="Outside Window" TextWrapping="Wrap"/> 
      <Button x:Name="button" Width="75" Content="Close this"/> 
     </StackPanel> 
    </Popup> 
    <TextBlock x:Name="textBlock" HorizontalAlignment="Center" VerticalAlignment="Center" Text="MouseDown here" TextWrapping="Wrap" Background="#FFBFFFBD"/> 
</Grid> 

Надеется, что это помогает.

0

Возможно всплывающее окно.

простой пример:

<Window x:Class="WpfPopupTest.Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Title="Window1" Height="300" Width="300"> 
<Grid> 
    <Popup HorizontalOffset="{Binding Path=ActualWidth, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" IsOpen="True"> 
     <StackPanel Background="HotPink"> 
      <TextBlock Text="Hey from outside!" Foreground="Gold" /> 
      <Button>Button!</Button> 
     </StackPanel> 
    </Popup> 
</Grid> 

Вероятно, не то, что вы хотите сделать, но я думаю, что это может работать для вас.

0

Вы можете использовать немодальное диалоговое окно без рамки окна. В противном случае он может появиться в пространстве, если вы захотите.

Cory

Смежные вопросы