Silverlight 5 在 属性 上的绑定在其 setter 中的逻辑在附加调试时无法按预期工作

Silverlight 5 binding on a property with logic in its setter does not work as expected when debug is attached

我的问题很容易重现。 我使用视图模型从头开始创建了一个项目。 正如您在 "Age" 属性 的 setter 中看到的,我有一个简单的逻辑。

public class MainViewModel : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        private int age;

        public int Age
        {
            get
            {
                return age;
            }
            set
            {
                /*Age has to be over 18* - a simple condition in the setter*/
                age = value;
                if(age <= 18)
                    age = 18;

                OnPropertyChanged("Age");
            }
        }

        public MainViewModel(int age)
        {
            this.Age = age;
        }

        private void OnPropertyChanged(string propertyName)
        {
            if (this.PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }
    }

在MainPage.xaml

 <Grid x:Name="LayoutRoot" Background="White">
        <TextBox 
            Text="{Binding Path=Age, Mode=TwoWay}" 
            HorizontalAlignment="Left"
            Width="100"
            Height="25"/>
        <TextBlock
            Text="{Binding Path=Age, Mode=OneWay}"
            HorizontalAlignment="Right"
            Width="100"
            Height="25"/>

    </Grid>

而MainPage.xaml.cs我只是实例化视图模型并将其设置为DataContext。

public partial class MainPage : UserControl
{
    private MainViewModel mvm;

    public MainPage()
    {
        InitializeComponent();

        mvm = new MainViewModel(20);
        this.DataContext = mvm;
    }
}

我希望如果在文本框中输入的值低于 18,此代码会将 Age 设置为 18。 场景:在TextBox中插入值“5”并按tab键(绑定生效,TextBox需要失去焦点)

案例 1:已附加调试器 => 正如预期的那样,TextBox 值将为“5”,TextBlock 值将为“18”。 - 错误

情况 2:未附加调试器 => TextBox 值为“18”,TextBlock 值为“18” - 正确

似乎在附加调试器时,绑定在触发 属性 值更新的对象上无法按预期工作。仅当我们绑定的 属性 在 setter 或 getter.

中具有某种逻辑时才会发生这种情况

SL5 是否发生了某些变化,setters 中的逻辑不再被允许?

配置: VisualStudio 2010 SP1 SL 5 工具 5.1.30214.0 SL5 SDK 5.0.61118.0 浏览器 10

如果有人对答案感兴趣,请阅读这里: https://social.msdn.microsoft.com/Forums/en-US/f30a497c-d063-44b7-81ef-f979f186aee8/silverlight-5-binding-on-a-property-with-logic-in-its-setter-does-not-work-as-expected-when-debug-is?forum=silverlightgen