例外没有显示

时间:2010-06-28 13:03:32

标签: c# wpf xaml exception

我有:

 public class Person : INotifyPropertyChanged
    {
       private string _name;

        public int Age { get; set; }

        public string Name
        {
            get { return _name; }
            set
            {
                if (!String.IsNullOrEmpty(_name))
                {
                    if (String.IsNullOrEmpty(value))
                    { 
                       throw new Exception("name couldn't be null");



                    }
                    else if ((_name.Equals(value) != true))
                    {
                        if (!String.IsNullOrEmpty(value))
                        {
                            throw new Exception("name couldn't be null");
                        }
                        else
                        {
                            InvokePropertyChanged("_name");
                        }


                        _name = value;
                    }

                }

                else if (String.IsNullOrEmpty(value))
                {
                    throw new Exception("name couldn't be null");
                }
                else
                {
                    _name = value;
                }

            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
        private void InvokePropertyChanged(string propertyName)
        {

            var e = new PropertyChangedEventArgs(propertyName);

            PropertyChangedEventHandler changed = PropertyChanged;

            if (changed != null) changed(this, e);

        }

>
<Grid>
    <StackPanel>
        <TextBox Name="tbName" Text="{Binding Path=Name, Mode=TwoWay}"></TextBox>
        <TextBox Name="tbOther" Text="Come in"></TextBox>
    </StackPanel>
</Grid>

 public UserControl1()
        {
            InitializeComponent();

            Person person = new Person();
            person.Name = "Patrick";

 this.DataContext = person;

        }

为什么我调试并进入以下行:

抛出新的异常(“名称不能为空”);

异常未显示。

4 个答案:

答案 0 :(得分:2)

请参阅此other question,但基本上该异常将由Binding处理和抑制。

答案 1 :(得分:1)

您没有将控件设置为从我所看到的人物对象绑定。因此,它不应该尝试设置它并随后出错。

当你在吸气器中放置断点时,它是否会被调用?

答案 2 :(得分:1)

我认为你想将Person对象分配给控件的DataContext:

public UserControl1()
{
    InitializeComponent();
    Person person = new Person();
    person.Name = "Patrick";
    this.DataContext = person;
}

您可能还想在绑定上设置ValidatesOnExceptions,以便在设置器中抛出异常时,UI将显示错误模板。

<TextBox Name="tbName" Text="{Binding Path=Name, Mode=TwoWay, ValidatesOnExceptions=True}"></TextBox>

答案 3 :(得分:1)

尝试这样做:

...
else if (String.IsNullOrEmpty(value))
{
    try{
        throw new Exception("name couldn't be null");
    }
    catch(Exception ex)
    {
         //Set Breakpoint Below
         int x=0;
    }
}
...

您将看到您的代码将进入catch块,并且异常会被抛出。然而,异常的处理取决于您。 Quartermeister已经建议了最好的方法。

否则,根据您的VS IDE设置,异常将被禁止,并且您在屏幕上看不到错误。