Я ударяю головой на свой стол с этой ошибкой связывания. Я проверил несколько сообщений об ошибке пути BindingExpression
и не вижу ничего, что работает с моей ситуацией.
Во всяком случае, у меня есть настраиваемый элемент управления IncrementingTextBox
. Я пытаюсь отключить его, когда пользователь "проверяет" CheckBox
над ним.
У меня есть привязка к свойству CheckBox
IsChecked
, которое отлично работает и срабатывает, когда это предполагается. Он правильно устанавливает свойство UseSensorLength
на ConfigurationModel.
Однако привязка к свойству IncrementingTextBox
IsEnabled
вызывает ошибку пути BindingExpression
и поэтому не обновляется вообще.
В качестве теста я попытался в коде, чтобы включить и отключить элемент управления, и он работает отлично, но я не могу заставить Binding работать над ним.
Вот фрагмент из моего xaml:
...
DataContext="{Binding RelativeSource={RelativeSource Self}}"
...
...
<CheckBox Content="Use Sensor Length" Margin="30,6,0,0"
IsChecked="{Binding ConfigurationModel.UseSensorLength, Mode=TwoWay}"/>
<local:IncrementingTextBox x:Name="video_length_textbox" Margin="0,0,0,5"
IsTextEnabled="False"
IsEnabled="{Binding ConfigurationModel.DontUseSensorLength}"
ValueChanged="VideoEventValueChanged"/>
И вот фрагмент из моей конфигурации:
public bool DontUseSensorLength
{
get { return !UseSensorLength; }
}
public bool UseSensorLength
{
get { return _useSensorLength; }
set
{
_useSensorLength = value;
OnPropertyChanged("UseSensorLength");
OnPropertyChanged("DontUseSensorLength");
}
}
Вот сообщение об ошибке, которое я получаю в своем окне вывода при запуске приложения:
Ошибка System.Windows.Data: 40: Ошибка пути BindingExpression: Свойство ConfigurationModel не найдено в 'object' '' IncrementingTextBox '(Name=' video_length_textbox ')'. BindingExpression: Path = ConfigurationModel.DontUseSensorLength; DataItem = 'IncrementingTextBox' (Name= 'video_length_textbox'); цель element - "IncrementingTextBox" (Name= 'video_length_textbox'); цель property is IsEnabled (тип "Boolean" )
Помните, что привязка свойства UseSensorLength работает нормально, но привязка DontUseSensorLength вызывает вышеупомянутую ошибку пути BindingExpression.