Ошибка нулевой ссылки для привязки проверки - PullRequest
0 голосов
/ 19 марта 2012

Я попробовал следующий код, но он дал нулевую ссылку на ошибку для второй строки. Я удалил вторую строку, но теперь он выдал ту же ошибку для третьей строки. Есть идеи?

Binding binding = BindingOperations.GetBinding(txt_density, TextBox.TextProperty);
binding.ValidationRules.Clear();
binding.ValidationRules.Add(new MainWindow.Float_Positive_ValidationRule());

1 Ответ

2 голосов
/ 19 марта 2012

Вы не включили соответствующий 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; }

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...