前提・実現したいこと
WPFでWindowsアプリケーションを作成中です。
想定する操作対象者は、パソコンのスキルが少ない人が多いと想定しています。
アプリ初回起動時に、チュートリアル的な物を実装しようと考えていますが
WPFのXAMLでどのような実装をしたらよいのか見当がつきません。
と言いますのも、WPFは今回が初めてになります。
どのような事が出来るのかも判断できないため、どうしたいという仕様が思い浮かばないのが実情です。
起動2回目以降のユーザーが操作する画面をそのまま使いながら、初回起動時のみユーザーに強調表示等で補足が出来るようなチュートリアルが出来ればと考えています。
オススメの表現方法をご教授頂けないでしょうか。
よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答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総合スコア9862
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/07 16:23