Вы не включили соответствующий XAML, поэтому трудно точно сказать, в чем проблема.
Если вы установите точку останова в строке binding.ValidationRules.Clear();
, вы, скорее всего, обнаружите, что ваша привязка равна нулюВозможно, из-за того, что для свойства Text
не было установлено никаких привязок.
Если в свойстве есть действительный набор привязок, то коллекция ValidationRules
должна быть инициализирована, но пуста (т. е. не равна нулю), поэтомуэто не должно быть вашей проблемой, поэтому проблема связана с самой привязкой.
Если вы воспользуетесь этим простым примером, вы поймете, что я имею в виду, просто удалите привязку Text
из XAML, чтобы вызвать ошибку.
<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; }
}
}