C# WPF从绑定表达式访问对象

C# WPF从绑定表达式访问对象,c#,xaml,datacontext,C#,Xaml,Datacontext,我在访问Datacontext绑定表达式后面的真实对象时遇到问题 父画布具有在字典的代码中定义的DataContext(字符串/对象(BindDetails): 我有以下XAML: <Canvas x:Name="canvas" Width="100" Height="90" RenderTransformOrigin="0.5,0.5" Background="{DynamicResource {x:Static SystemColors.ControlLightBrushKey}}"&

我在访问Datacontext绑定表达式后面的真实对象时遇到问题

父画布具有在字典的代码中定义的DataContext(字符串/对象(BindDetails):

我有以下XAML:

<Canvas x:Name="canvas" Width="100" Height="90" RenderTransformOrigin="0.5,0.5" Background="{DynamicResource {x:Static SystemColors.ControlLightBrushKey}}">
  <Rectangle Canvas.Left="1" Canvas.Top="1" Width="95" Height="80" Fill="White"/>
  <Canvas x:Name="Frame" DataContext="{Binding [Frame]}">
    <Rectangle Canvas.Left="1" Canvas.Top="1" Width="1.75" Height="80" Fill="{Binding Color}"/>
    <Rectangle Canvas.Left="2.75" Canvas.Top="79.25" Width="92.5" Height="1.75" Fill="{Binding Color}"/>
    <Rectangle Canvas.Left="94.25" Canvas.Top="1" Width="1.75" Height="80" Fill="{Binding Color}"/>
    <Rectangle Canvas.Left="2.75" Canvas.Top="42.5" Width="72" Height="1.75" Fill="{Binding Color}"/>
    <Rectangle Canvas.Left="74.75" Canvas.Top="1" Width="1.75" Height="78.25" Fill="{Binding Color}"/>
  </Canvas>
  <Canvas x:Name="_1_1" Width="5.375" Height="40" Tag="1-1" DataContext="{Binding [1-1]}">
    <Canvas.RenderTransform>
      <TranslateTransform X="2.75" Y="2"/>
    </Canvas.RenderTransform>
    <Rectangle Canvas.Left="0" Canvas.Top="0" Width="5.375" Height="40" Fill="{Binding Color}" StrokeThickness="0.125" Stroke="#000000"/>
    <TextBlock FontSize="3" Foreground="#000000" HorizontalAlignment="Center" VerticalAlignment="Center" Canvas.Left="0" Canvas.Top="0">1-1</TextBlock>
  </Canvas>
.
.
.

1-1
.
.
.
我的问题是如何从代码端访问DataContext绑定?我正在遍历父画布的子画布,如下所示:

private void EnumElementChildren (DependencyObject parent)
        {

            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
            {                
                DependencyObject childVisual = VisualTreeHelper.GetChild(parent, i);             
                if (childVisual is FrameworkElement)
                {
                    FrameworkElement instance = (FrameworkElement)childVisual;
                    if (instance != null)
                    {

                        if (instance.GetBindingExpression(FrameworkElement.DataContextProperty) != null)
                        {
                        //Access data bound object here


                        }
private void EnumElementChildren(DependencyObject父对象)
{
for(int i=0;i
如果您对此有任何见解,我们将不胜感激。提前谢谢您


编辑

我研究了BindingExpression对象,在parentbinding中,我能够检索路径(例如,第一个绑定为“Frame”的子对象)。我无法看到对实际对象的引用。是否有必要跟踪父对象,直到获得数据源对象(使用递归函数)