【发布时间】:2020-09-22 01:02:08
【问题描述】:
我在 XAML 中创建了一个 WPF 组合框:
<ComboBox DockPanel.Dock="Top" Background="{DynamicResource Esri_BackgroundPressedBrush}" DataContext="DockpaneData"
Foreground="{DynamicResource Esri_TextMenuBrush}" HorizontalAlignment="Stretch" FontSize="14" VerticalAlignment="Center" Margin="5,0,5,0" IsEditable="True" Text="Jump To"
ItemsSource="{Binding FeatureEditUpdates}">
</ComboBox>
我设置了 ComboBox“DockpaneData”的 DataContext,在这种情况下,它是另一个名为 DockpaneViewModel.cs 的文件中的一个名为“DockpaneData”的内部类。
为什么我不能绑定到公共类属性“FeatureEditUpdates”?
如果我将它放在与文件同名的类中,它将起作用,并且不要在 ComboBox 中设置数据上下文。为什么?
我在输出窗口中遇到的错误是:
System.Windows.Data Error: 40 : BindingExpression path error: 'FeatureEditUpdates' property not found on 'object' ''String' (HashCode=-1567065443)'. BindingExpression:Path=FeatureEditUpdates; DataItem='String' (HashCode=-1567065443); target element is 'ComboBox' (Name=''); target property is 'ItemsSource' (type 'IEnumerable')
我看到它认为数据上下文是一个字符串,这对我来说没有意义。
谢谢!
【问题讨论】:
-
Datacontext 继承自其父控件,因此您无需设置各个控件的 datacontext,根据例外情况,您的组合框的 datacontext 是字符串类型,而不是 DockPaneViewModel