ちょうどWPFを始め、特にTextBoxのエントリの検証を始めています。WPFの基本的な確認
これは私のXAMLである: -
<Window x:Class="WpfTestBinding.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Height="350"
Width="525"
Loaded="OnInit">
<Grid>
<Button Content="OK" Height="23" HorizontalAlignment="Left" Margin="235,164,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
<TextBox Height="23" HorizontalAlignment="Left" Margin="206,108,0,0"
Name="textBox1" VerticalAlignment="Top" Width="120" >
<TextBox.Text>
<Binding Path="Description" UpdateSourceTrigger="LostFocus" >
<Binding.ValidationRules>
<ExceptionValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
</Grid>
</Window>
これは私のバインディングコードです: -
namespace WpfTestBinding
{
class MyDataItem
{
private String _description;
public String Description
{
get { return _description; }
set
{
_description = value;
Debug.WriteLine("Setting description ="+value);
if (String.IsNullOrEmpty(value))
{
throw new ApplicationException("Description is mandatory.");
}
}
}
}
}
と、これは私のバッキングコードです: - 私が選択した場合
まずusing System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Windows;
namespace WpfTestBinding
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void OnInit(object sender, RoutedEventArgs e)
{
this.DataContext = new MyDataItem();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
Debug.WriteLine("Button clicked.");
}
}
}
テキストボックスとそのタブから何も起こりません、私は "記述は必須"例外がスローされると思いますか? 次に、テキストボックスに何かを入力してすぐに削除し、タブを押すと例外がスローされますか? この例外は処理されず、未処理の例外エラーが発生します。
1は、あなたが投稿したリンクは、それが検証に使用するバインディング書くために最も一般的な方法のより良い例を持っていました – Rachel