C# WPF从绑定表达式访问对象
我在访问Datacontext绑定表达式后面的真实对象时遇到问题 父画布具有在字典的代码中定义的DataContext(字符串/对象(BindDetails): 我有以下XAML: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}}"&
<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”的子对象)。我无法看到对实际对象的引用。是否有必要跟踪父对象,直到获得数据源对象(使用递归函数)