画面内のBindingでValidationExceptionあたりを投げると、いい感じに表示してくれるValidationSummaryコントロールというものがあります。
こいつに、自分で任意のメッセージとか仕込めないのか少し探ってみます。
ヘルプを見ると、どうやらErrorsプロパティにValidationSummaryItemクラスを追加すると、メッセージが表示されるらしいです。
ということで以下のコードを書いてみました。
MainPage.xaml
<UserControl xmlns:dataInput="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.Input" x:Class="ValidationSummaryTest.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480"> <StackPanel x:Name="LayoutRoot"> <TextBox x:Name="input" /> <Button Content="追加" Click="AddButton_Click" /> <dataInput:ValidationSummary x:Name="summary"></dataInput:ValidationSummary> </StackPanel> </UserControl>
TextBoxと、Buttonと、ValidationSummaryを置いただけのシンプルなつくりです。
TextBoxとValidationSummaryには、x:Name属性をつけているので、コードビハインドからinputとsummaryという名前で、アクセス出来るようにしています。
ここでは、簡単に、TextBoxに入力した内容を、ValidationSummaryに追加してみます。
MainPage.xaml.cs
using System.Windows; using System.Windows.Controls; namespace ValidationSummaryTest { public partial class MainPage : UserControl { public MainPage() { InitializeComponent(); } private void AddButton_Click(object sender, RoutedEventArgs e) { // ValidationSummaryItemを作って追加する。 // コンストラクタには、表示させたいメッセージをセットする。 var item = new ValidationSummaryItem(input.Text); summary.Errors.Add(item); } } }
これで実行してTextBoxに適当なメッセージを入れてボタンを押すと下のような結果になります。
うん、ばっちり。