C# 将字典值绑定到UserControl WPF的依赖项属性

C# 将字典值绑定到UserControl WPF的依赖项属性,c#,wpf,binding,dependency-properties,C#,Wpf,Binding,Dependency Properties,我正在尝试将作为tabcontrol的itemsource的字典集中的值绑定到保存在我的tabcontrol.ContentTemplate中的UserControl的DependencyProperty 就我而言,我无法将其绑定,我强烈感觉它可能与userControl“EnvironmentStateView”的DataContext有关,在本例中,它是一个viewmodel 在一个单独的文本块中,对集合中的每个项都使用字典键的绑定,但不幸的是,这就是它 EnvironmentCollect

我正在尝试将作为tabcontrol的itemsource的字典集中的值绑定到保存在我的tabcontrol.ContentTemplate中的UserControl的DependencyProperty

就我而言,我无法将其绑定,我强烈感觉它可能与userControl“EnvironmentStateView”的DataContext有关,在本例中,它是一个viewmodel

在一个单独的文本块中,对集合中的每个项都使用字典键的绑定,但不幸的是,这就是它

EnvironmentCollectionView.xaml

<TabControl Name="EnvironmentCollectionTabControl" ItemsSource="{Binding environmentCollection}">
      <TabControl.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Key}"></TextBlock>
            </DataTemplate>
      </TabControl.ItemTemplate>
      <TabControl.ContentTemplate>
          <DataTemplate>
                <local:EnvironmentStateView Grid.Column="0" Grid.Row="0" EnvironmentObject="{Binding Value}" EnvironmentKey="{Binding Key}"></local:EnvironmentStateView>
          </DataTemplate>
      </TabControl.ContentTemplate>
</TabControl>
现在,键和值显然不在EnvironmentStateViewModel中,我猜它是当前的数据上下文

我故意将EnvironmentTagTextBlock绑定错拼到Keyy,从而导致绑定错误:

System.Windows.Data Error: 40 : BindingExpression path error: 'Keyy' property not found on 'object' ''KeyValuePair`2' (HashCode=-459631492)'. BindingExpression:Path=Keyy; DataItem='KeyValuePair`2' (HashCode=-459631492); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
所以我猜我需要以某种方式将我的数据项从EnvironmentStateViewModel更改为 KeyValuePair`2也许吧,但我不知道该怎么做,也不知道我是否应该笑

public static readonly DependencyProperty EnvironmentObjectProperty =
    DependencyProperty.Register(
        "EnvironmentObject",
        typeof(Framework.Environment),
        typeof(EnvironmentStateView),
        new PropertyMetadata(null));

父类不应该是
EnvironmentStateView
而不是
UserControl

Gaahh您是对的,这将教会我惰性地复制一些代码:)。不幸的是,这与原来的问题没有什么不同。
System.Windows.Data Error: 40 : BindingExpression path error: 'Keyy' property not found on 'object' ''KeyValuePair`2' (HashCode=-459631492)'. BindingExpression:Path=Keyy; DataItem='KeyValuePair`2' (HashCode=-459631492); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
public static readonly DependencyProperty EnvironmentObjectProperty =
    DependencyProperty.Register(
        "EnvironmentObject",
        typeof(Framework.Environment),
        typeof(EnvironmentStateView),
        new PropertyMetadata(null));