我在我的桌子上敲着我的頭和這個綁定錯誤..我檢查了BindingExpression
路徑錯誤的幾個貼子,看不到任何工作與我的情況。WPF錯誤40 BindingExpression路徑錯誤:在'對象'上找不到屬性
無論如何,我有一個自定義控件IncrementingTextBox
。我試圖在用戶'檢查'上面的CheckBox
時禁用它。
我對CheckBox
IsChecked
IsChecked
屬性工作正常,並正在發射,當它應該。它在ConfigurationModel上正確設置UseSensorLength
屬性。
但是,IncrementingTextBox
IsEnabled
屬性上的綁定導致BindingExpression
路徑錯誤,因此根本不會更新。
作爲一個測試,我嘗試在後面的代碼來啓用和禁用控制,它的工作原理很好,但我似乎無法讓綁定工作。
這裏是我的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"/>
,這裏是從我的ConfigurationModel片段:
public bool DontUseSensorLength
{
get { return !UseSensorLength; }
}
public bool UseSensorLength
{
get { return _useSensorLength; }
set
{
_useSensorLength = value;
OnPropertyChanged("UseSensorLength");
OnPropertyChanged("DontUseSensorLength");
}
}
這是在運行時,我在我的輸出窗口中收到錯誤消息應用:
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')
請記住,'UseSensorLength'屬性綁定工作正常,但t他'DontUseSensorLength'綁定導致上面的'BindingExpression路徑錯誤'。
你可以發佈錯誤以及從輸出窗口中獲得嗎? – 2013-04-23 15:59:55
我已將錯誤消息文本添加到上述發佈。 – Curtis 2013-04-23 16:03:36
您必須設置DataContext以反映您當前的用戶控件。當你創建綁定時,它會在'ConfigurationModel.DontUseSensorLength'值的'IncrementingTextBox'的DataContext裏面查找。你必須使用類似於[this]的'RelativeSource'(http://stackoverflow.com/a/11550721/1466627)。 – 2013-04-23 16:08:14