質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
UWP

UWPは、Universal Windows Platformの略。様々なデバイス向けに提供されているアプリケーションを共通のフレームワーク上で動作可能にする仕組みで、Windows10で導入されました。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

Q&A

解決済

1回答

4800閲覧

XAML上に2つのViewboxを中央と下部に配置したい

johanneskrauser

総合スコア20

UWP

UWPは、Universal Windows Platformの略。様々なデバイス向けに提供されているアプリケーションを共通のフレームワーク上で動作可能にする仕組みで、Windows10で導入されました。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

0グッド

1クリップ

投稿2017/05/26 03:39

UWPアプリケーションの開発でViewboxを2つ配置したいのですが、2つとも中央に表示されてしまいます。
Viewbox内のTextBlockのVerticalAlignmentをBottomに指定することで可能かと思っていたのですが出来ませんでした。

Borderを利用してメッセージの背景色を指定したいので、Viewbox要素内におさめたいのですのですが
他の方法があれば教えてください。

XAML

1<Page 2 x:Class="FaceDetectedCameraApp.BlankPage" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 xmlns:local="using:FaceDetectedCameraApp" 6 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 7 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 8 mc:Ignorable="d"> 9 10 <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 11 12 <!--中央部のメッセージ--> 13 <Viewbox Stretch="None"> 14 <Border x:Name="GyroAlertBorder" Background="White" CornerRadius="20,20,20,20"> 15 <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,10,10,10" 16 x:Name="GyroAlertText" FontSize="36" Foreground="Black" Text="中央に表示したいメッセージ" /> 17 </Border> 18 </Viewbox> 19 20 <!--下部のメッセージ--> 21 <Viewbox Stretch="None"> 22 <Border x:Name="AnotationBorder" Background="White" CornerRadius="20,20,20,20"> 23 <TextBlock HorizontalAlignment="Center" VerticalAlignment="Bottom" 24 x:Name="AnotationText" FontSize="24" Foreground="Black" Text="下に表示したいメッセージ" ></TextBlock> 25 </Border> 26 </Viewbox> 27 28 29 </Grid> 30</Page> 31

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ebiryo

2017/05/26 03:55

上下ではなく、中央と下部なんですよね? 中央というのは下部も含めたPage全体の中央、という認識であっていますか?
johanneskrauser

2017/05/26 09:46

はい。中央と下部です。認識あってます。説明が至らなくてすいません。。
guest

回答1

0

ベストアンサー

Grid.Rowを設定してみては?

XAML

1 <Grid> 2 <Grid.RowDefinitions> 3 <RowDefinition Height="100*"/> 4 <RowDefinition Height="80"/> 5 </Grid.RowDefinitions> 6 7 <!--中央部のメッセージ--> 8 <Viewbox Stretch="None" Grid.Row="0"> 9 <Border x:Name="GyroAlertBorder" Background="White" CornerRadius="20,20,20,20"> 10 <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,10,10,10" 11 x:Name="GyroAlertText" FontSize="36" Foreground="Black" Text="中央に表示したいメッセージ" /> 12 </Border> 13 </Viewbox> 14 15 <!--下部のメッセージ--> 16 <Viewbox Stretch="None" Grid.Row="1"> 17 <Border x:Name="AnotationBorder" Background="White" CornerRadius="20,20,20,20"> 18 <TextBlock HorizontalAlignment="Center" VerticalAlignment="Bottom" 19 x:Name="AnotationText" FontSize="24" Foreground="Black" Text="下に表示したいメッセージ" ></TextBlock> 20 </Border> 21 </Viewbox> 22 </Grid>

投稿2017/05/26 03:54

dn315

総合スコア201

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

johanneskrauser

2017/05/26 09:58

上記の設定で、中央に表示したいメッセージと下部に表示したいメッセージが期待通りに配置することができました。 しかし、グリッド上部にButton等を複数配置するとGrid内にChildは一つしか指定できないとIDEから突っ込まれてしまいます。。 Grid内に複数Childエレメントを設定することは、やっぱり不可能なんでしょうか? プロパティで複数設定することも可能なのでしょうか?
Tak1wa

2017/05/26 12:08

dn315さんの回答でなぜ実現できているか理解されていますか? IDEから突っ込まれてしまうとのことですが、行列のレイアウトはどのように設定されているのでしょうか。
ebiryo

2017/05/26 12:22 編集

質問者さんに確認ですが、dn315さんの方法では「中央のメッセージ」はPage全体の中央ではなく、「下のメッセージ」を除いた領域の中央になりませんか?
dn315

2017/05/29 02:26

StackPanelやGridなどをChildにすれば配置できます。 <!--中央部のメッセージ--> <Viewbox Stretch="None" Grid.Row="0"> <StackPanel Orientation="Vertical"> <Button Content="A"/> <Button Content="B"/> <Button Content="C"/> <Border x:Name="GyroAlertBorder" Background="White" CornerRadius="20,20,20,20"> <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,10,10,10" x:Name="GyroAlertText" FontSize="36" Foreground="Black" Text="中央に表示したいメッセージ" /> </Border> </StackPanel> </Viewbox>
johanneskrauser

2017/06/05 02:52

回答ありがとうございました。 GridのRowや、ColをHTMLのTableと同様にColspanすることもできるようなので、レイアウトをTableでイメージしながらデザインして、コンポーネントを配置してみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問