Sto sbattendo la testa sulla mia scrivania con questo errore di associazione .. Ho controllato diversi post per l'errore di percorso BindingExpression
e non vedo nulla che funzioni con la mia situazione.Errore WPF 40 Errore percorso BindingExpression: proprietà non trovata su 'oggetto'
In ogni caso, ho un controllo personalizzato chiamato IncrementingTextBox
. Sto provando a disabilitarlo ogni volta che l'utente "controlla" lo CheckBox
sopra di esso.
Ho una associazione sulla proprietà CheckBox
IsChecked
che funziona correttamente e sta funzionando quando è previsto. Imposta correttamente la proprietà UseSensorLength
su ConfigurationModel.
Tuttavia, il binding sulla proprietà IncrementingTextBox
IsEnabled
causa un errore di percorso BindingExpression
e pertanto non si aggiorna affatto.
Come test, ho tentato nel codice dietro di abilitare e disabilitare il controllo e funziona perfettamente, ma non riesco a ottenere il binding su cui lavorare.
Ecco un frammento del mio 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"/>
Ed ecco un frammento della mia ConfigurationModel:
public bool DontUseSensorLength
{
get { return !UseSensorLength; }
}
public bool UseSensorLength
{
get { return _useSensorLength; }
set
{
_useSensorLength = value;
OnPropertyChanged("UseSensorLength");
OnPropertyChanged("DontUseSensorLength");
}
}
Ecco il messaggio di errore che sto ottenendo nella mia finestra di uscita durante l'esecuzione del app:
System.Windows.Data Error: 40 : BindingExpression path error: 'ConfigurationModel' property not found on 'object' ''IncrementingTextBox' (Name='video_length_textbox')'. BindingExpression:Path=ConfigurationModel.DontUseSensorLength; DataItem='IncrementingTextBox' (Name='video_length_textbox'); target element is 'IncrementingTextBox' (Name='video_length_textbox'); target property is 'IsEnabled' (type 'Boolean')
Ricordate, la proprietà 'UseSensorLength' vincolante sta lavorando bene, ma t Il collegamento "DontUseSensorLength" sta causando il precedente "errore del percorso di BindingExpression".
Puoi pubblicare anche l'errore che hai ottenuto dalla finestra di output? –
Ho aggiunto il testo del messaggio di errore alla pubblicazione sopra. – Curtis
È necessario impostare DataContext in modo che rifletta il controllo utente corrente. Quando si crea l'associazione, viene visualizzato all'interno di DataContext di "IncrementingTextBox' per il valore' ConfigurationModel.DontUseSensorLength'. Devi usare un 'RelativeSource' simile a [this] (http://stackoverflow.com/a/11550721/1466627). –