WPF развернуть элемент - PullRequest
       9

WPF развернуть элемент

0 голосов
/ 17 марта 2010

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

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

Ответы [ 3 ]

2 голосов
/ 17 марта 2010

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

<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 голосов
/ 17 марта 2010

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

Cory

0 голосов
/ 17 марта 2010

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

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

<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>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...