4

XAMLを使用したWPFで、このようなIPadのようなオーバーレイウィンドウをどのように実行しますか ここに画像の説明を入力してください

トグルボタンまたはエキスパンダーコントロールについて考えました。パネルがスケーラブルであるといいでしょう。ボタン自体とはサイズが異なるセントリックオーバーレイで最も問題が発生します。

ヘルプ、リンク、またはリソースは素晴らしいでしょう。

4

1 に答える 1

3

dowhileforが正しい場合は、Popupクラスが最適です。子としてカスタムコントロールを備えたPopupを使用して、小さなサンプルプロジェクトを作成しました。ポップアップが表示される場所を設定できるため、ポップアップのPlacementTargetフィールドとPlacementフィールドが重要です。お役に立てれば!

ポップアップの例

カスタムコントロール:

<UserControl x:Class="SilverfighterTest.PopupControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300">
<UserControl.Resources>
    <Style TargetType="Button">
        <Setter Property="Margin" Value="4"/>
        <Setter Property="Padding" Value="7"/>
    </Style>
</UserControl.Resources>
<Grid Background="Gray">
    <StackPanel>
        <Button>Clone</Button>
        <Button>Log Call</Button>
        <Button> Visit Report</Button>
        <Button> Delete</Button>
        <Button>Cancel</Button>
    </StackPanel>

</Grid>
</UserControl>

ポップアップ付きのウィンドウ:

<Window x:Class="SilverfighterTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:SilverfighterTest"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <Rectangle VerticalAlignment="Top" Name="rect" MouseLeftButtonDown="rect_MouseLeftButtonDown" HorizontalAlignment="Right" Height="50" Width="50" Fill="Red">

    </Rectangle>

    <Popup PopupAnimation="Slide" Placement="Bottom" PlacementTarget="{Binding ElementName=rect}"  Name="thePopup" >
        <local:PopupControl/>
    </Popup>
</Grid>

ウィンドウの背後にあるコード:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

    }

    private void rect_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        thePopup.IsOpen = !thePopup.IsOpen;
    }
}
于 2012-05-05T15:41:35.867 に答える