wpf验证规则没有开始

时间:2014-10-12 22:26:48

标签: c# wpf xaml mvvm

我有一个带文本框样式属性的Xaml页面。每当用户单击文本框为空的按钮时,我需要显示验证错误。现在,即使文本框为空并按下按钮,也会弹出一个带有空文本的消息框。甚至应用程序异常也不起作用..请帮忙......

的Xaml:

<Window.Resources>
        <Style TargetType="{x:Type TextBox}">
            <Setter Property="Validation.ErrorTemplate">
                <Setter.Value>
                    <ControlTemplate>
                        <DockPanel LastChildFill="True">
                            <TextBlock DockPanel.Dock="Right" 
                    Foreground="Orange"
                    FontSize="12pt">
                    !!!!
                            </TextBlock>
                            <Border BorderBrush="Green" BorderThickness="1">
                                <AdornedElementPlaceholder />
                            </Border>
                        </DockPanel>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>

        <Style.Triggers>
            <Trigger Property="Validation.HasError" Value="true">
                <Setter Property="ToolTip"
            Value="{Binding RelativeSource={RelativeSource Self}, 
                   Path=(Validation.Errors)[0].ErrorContent}"/>
            </Trigger>
        </Style.Triggers>
    </Style>

</Window.Resources>

                                                                                                                                                                                                                                                                                         

我的ViewModel类:

public class Customer
    {
        private string _Text;
        public string text
        {
            get
            {
                return _Text;
            }
            set
            {
                _Text = value;
                if (string.IsNullOrEmpty(value))
                {
                    throw new ApplicationException("Name is Mandatory");
                }
            }
        }

        public Customer()
        {
        }

        private RelayCommand<object> _commandOkInstance;

        public ICommand CommandOk
        {
            get
            {
                if (_commandOkInstance == null)
                    _commandOkInstance = new RelayCommand<object>(OkCommand);
                return _commandOkInstance;
            }



        }

        public void OkCommand(object obj)
        {
            MessageBox.Show(_Text);
        }
    }

主窗口:

 public partial class MainWindow : Window
    {


        public MainWindow()
        {
            InitializeComponent();
            Customer c = new Customer();
            this.DataContext = c;
        }



    }

0 个答案:

没有答案