您還沒有包含相關的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