在Silverlight CheckBox中的事件处理程序之后调用绑定

时间:2014-06-24 12:09:20

标签: binding silverlight-4.0

我在silverlight中有一个复选框,我已经将复选框IsChecked属性绑定了一个字符串属性,该属性存储的值类似于' True'并且'错误'。我在绑定中使用了转换器将字符串值转换为bool。我还有复选框的事件处理程序'已检查'并且“未选中”'事件。

当我选中或取消选中复选框时,绑定更新以及复选框的处理程序'''''并且“未选中”'调用event,但先调用hanlder然后再绑定更新。但我要求复选框首先更新绑定(对于IsChecked属性),然后调用事件hanlder。我怎样才能做到这一点。

//我绑定的属性IsChecked属性是' PropertyPath'

 // binding code

 CheckBox checkBoxControl = new CheckBox();    
 Binding binding = new Binding();
 binding.FallbackValue = false;
 binding.Mode = BindingMode.TwoWay;
 binding.Source = this;
 binding.Converter = new BoolStringToBoolConverter();
 binding.Path = new PropertyPath("PropertyPath");     
 checkBoxControl.SetBinding(GenericCheckBox.IsCheckedProperty, binding);

  checkBoxControl.Checked += new RoutedEventHandler(checkBox_CheckedProperty_Changed);

handler


       void checkBox_CheckedProperty_Changed(object sender, RoutedEventArgs e)
        {
            CheckBox chkBox = sender as CheckBox;    
            // Here the value of 'PropertyPath' is not updated as binding is not   updated yet
        }

下面是我在绑定中使用的转换器

public class BoolStringToBoolConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value != null && value.ToString().ToUpper().Trim().Equals("TRUE"))
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value != null && value.GetType().Equals(typeof(bool)) && (bool)value)
            {
                return "True";
            }
            else
            {
                return "False" ;
            }
        }
    }

点击复选框后,首先调用事件处理程序,然后转换“转换后”#39;转换器的方法被调用,因此在事件处理程序中我没有得到属性的更新值' PropertyPath'。

如何在调用复选框事件处理程序之前确保调用绑定更新。

0 个答案:

没有答案