您还没有包含相关的XAML,因此很难明确说明问题所在。
如果您在行binding.ValidationRules.Clear();
上设置了一个断点,您很可能会发现您的绑定为空,可能是因为Text
属性上没有绑定集。
如果在属性上有一个有效的绑定集合,那么ValidationRules
集合应该被初始化,但是应该是空的(即非空),所以这不应该是你的问题,这就使得绑定本身成为问题。
如果你使用这个简单的例子,你会明白我的意思,只是从XAML中删除Text
绑定导致错误。
<Window x:Class="WpfApplication1.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">
<Grid>
<TextBox x:Name="txt_density" Text="{Binding SomeText}" />
</Grid>
</Window>
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
SomeText = "blah";
this.DataContext = this;
this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
Binding binding = BindingOperations.GetBinding(txt_density, TextBox.TextProperty);
binding.ValidationRules.Clear();
//binding.ValidationRules.Add(new MainWindow.Float_Positive_ValidationRule());
}
public string SomeText { get; set; }
}
}
也许BindingOperations.GetBinding没有找到你正在寻找的绑定,所以它返回null? – 2012-03-18 23:02:53