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

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

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

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

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

1801閲覧

WPFのXAMLで操作者向けにチュートリアルを実装したい

wakasan

総合スコア6

XAML

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

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

1グッド

0クリップ

投稿2020/10/06 22:58

前提・実現したいこと

WPFでWindowsアプリケーションを作成中です。
想定する操作対象者は、パソコンのスキルが少ない人が多いと想定しています。

アプリ初回起動時に、チュートリアル的な物を実装しようと考えていますが
WPFのXAMLでどのような実装をしたらよいのか見当がつきません。
と言いますのも、WPFは今回が初めてになります。
どのような事が出来るのかも判断できないため、どうしたいという仕様が思い浮かばないのが実情です。

起動2回目以降のユーザーが操作する画面をそのまま使いながら、初回起動時のみユーザーに強調表示等で補足が出来るようなチュートリアルが出来ればと考えています。

オススメの表現方法をご教授頂けないでしょうか。
よろしくお願いいたします。

TN8001👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

スマホやゲームなどのチュートリアルで、ボタン等がアニメーションし(あるいはポップアップが出たりして)次の操作を促すようなものですよね?
そしてそれ以外の操作はブロックし、数段階の一連の操作をユーザーにやらせてみるみたいな。

それぞれ個別に考えれば、WPFでもそれほど難しくはありません。
しかし一連の操作をチュートリアルとしてやらせようとすると、頭を抱えますね^^;(理屈上は可能だと思いますが、かなりのコードと状態管理が必要になりそう)
サポートするようなライブラリも聞いたことないですし、やっている例も見たことありません(もしあったら私も参考にしたいです)

現実的には、

  • ツールチップやウォーターマーク等で説明を入れる
  • ツールチップやヘルプがあることをわかるように、?アイコンを表示する
  • 初回画面でのポップアップで動画再生

あたりになるかなぁ?と思います。

理想を言えば、説明が要らないぐらい「シンプルでわかりやすいUIにする」ということなんでしょうけど^^;


一個一個の説明を順次出すだけでよければ、こんなのがお手軽でそこそこ見栄えもいいかもしれません(モーダルダイアログを吹き出し型にして、次々出すだけ)

xml:MainWindow.xaml

1<Window 2 x:Class="Questions296394.MainWindow" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 Width="450" 6 Height="450" 7 Loaded="Window_Loaded"> 8 <StackPanel> 9 <Button 10 x:Name="aaa" 11 MinWidth="80" 12 Margin="10" 13 HorizontalAlignment="Center" 14 Content="aaa" /> 15 <TextBox 16 x:Name="bbb" 17 MinWidth="80" 18 Margin="10" 19 HorizontalAlignment="Center" 20 Text="bbb" /> 21 <Button 22 x:Name="ccc" 23 MinWidth="80" 24 Margin="10" 25 HorizontalAlignment="Center" 26 Content="ccc" /> 27 </StackPanel> 28</Window>

cs:MainWindow.xaml.cs

1using System.Windows; 2 3namespace Questions296394 4{ 5 public partial class MainWindow : Window 6 { 7 public MainWindow() => InitializeComponent(); 8 9 private void Window_Loaded(object sender, RoutedEventArgs e) 10 { 11 var p = aaa.PointToScreen(new Point(aaa.ActualWidth + 10, 0)); 12 var b = new BalloonWindow { Left = p.X, Top = p.Y, Title = "aaaの説明", Content = "なんたらかんたら", Owner = this, }; 13 b.ShowDialog(); 14 15 p = bbb.PointToScreen(new Point(bbb.ActualWidth + 10, 0)); 16 b = new BalloonWindow { Left = p.X, Top = p.Y, Title = "bbbの説明", Content = "ほげほげふがふが", Owner = this, }; 17 b.ShowDialog(); 18 19 p = ccc.PointToScreen(new Point(ccc.ActualWidth + 10, 0)); 20 b = new BalloonWindow { Left = p.X, Top = p.Y, Title = "cccの説明", Content = "なんたらかんたら\nほげほげふがふが", Owner = this, }; 21 b.ShowDialog(); 22 } 23 } 24}

xml:BalloonWindow.xaml

1<Window 2 x:Class="Questions296394.BalloonWindow" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 5 <Window.Style> 6 <Style TargetType="{x:Type Window}"> 7 <Setter Property="AllowsTransparency" Value="True" /> 8 <Setter Property="SizeToContent" Value="WidthAndHeight" /> 9 <Setter Property="WindowStyle" Value="None" /> 10 <Setter Property="Template"> 11 <Setter.Value> 12 <ControlTemplate TargetType="{x:Type Window}"> 13 <Grid> 14 <Border 15 Margin="20,0,0,0" 16 Padding="10" 17 Background="WhiteSmoke" 18 BorderBrush="Black" 19 BorderThickness="2" 20 CornerRadius="10"> 21 <StackPanel> 22 <TextBlock 23 HorizontalAlignment="Center" 24 FontSize="20" 25 Text="{TemplateBinding Title}" /> 26 <ContentPresenter Margin="10" Content="{TemplateBinding Content}" /> 27 <Button 28 HorizontalAlignment="Right" 29 Click="Button_Click" 30 Content="OK" /> 31 </StackPanel> 32 </Border> 33 <Polygon 34 Fill="WhiteSmoke" 35 Points="2,20 20,20 20,40" 36 Stroke="Black" 37 StrokeThickness="4" /> 38 <Polygon Fill="WhiteSmoke" Points="2,20 22,20 22,42" /> 39 </Grid> 40 </ControlTemplate> 41 </Setter.Value> 42 </Setter> 43 </Style> 44 </Window.Style> 45</Window>

cs:BalloonWindow.xaml.cs

1using System.Windows; 2 3namespace Questions296394 4{ 5 public partial class BalloonWindow : Window 6 { 7 public BalloonWindow() => InitializeComponent(); 8 9 private void Button_Click(object sender, RoutedEventArgs e) => DialogResult = true; 10 } 11}

イメージ説明

投稿2020/10/07 11:36

編集2023/07/23 07:37
TN8001

総合スコア9862

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

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

wakasan

2020/10/07 16:23

TN8001さん 回答ありがとうございます! >スマホやゲームなどのチュートリアルで、ボタン等がアニメーションし(あるいはポップアップが出たりして)次の操作を促すようなものですよね? >そしてそれ以外の操作はブロックし、数段階の一連の操作をユーザーにやらせてみるみたいな。 まさに仰る通りです。 サンプルソースまでありがとうございました。 動作確認しましたが、OKボタンを押さないと次へ移動しないあたりが非常に理想的な動作です。 こちらを参考に実装したいと思います。 感謝いたします。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問