C# Wpf数据绑定到对象';s属性属性

C# Wpf数据绑定到对象';s属性属性,c#,wpf,data-binding,C#,Wpf,Data Binding,所以我知道有很多数据绑定响应,但我找不到我想要的。或者我不能让它正常工作 在我的例子中,我有一个类,它有两个属性类型FootScan,如下所示: public class ScanResult { public FootScan LeftFoot { get; set; } public FootScan RightFoot { get; set; } public string Name { get; set; } ... } public class F

所以我知道有很多数据绑定响应,但我找不到我想要的。或者我不能让它正常工作

在我的例子中,我有一个类,它有两个属性类型FootScan,如下所示:

public class ScanResult
{
    public FootScan LeftFoot { get; set; }
    public FootScan RightFoot { get; set; }

    public string Name { get; set; }

    ...
}

public class FootScan
{
    public string ImagePath { get; set; }

    public double FootLength { get; set; }

    ...
}
在我的窗口中,我有:

    public ScanResult CurrentScan
    {
        get { return (ScanResult)this.GetValue(CurrentScanProperty); }
        set { this.SetValue(CurrentScanProperty, value); }
    }

    public static readonly DependencyProperty CurrentScanProperty = DependencyProperty.Register(
      "CurrentScan", typeof(ScanResult), typeof(wndScanner), new PropertyMetadata(null));
在加载的窗口上:

      CurrentScan = new ScanResult();
      CurrentScan.LeftFoot = new FootScan();
      CurrentScan.LeftFoot.FootLength = 285; //Normally comes from the scan result.
在XAML方面,我想将textblock的text属性绑定到CurrentScan.LeftFoot.FootLength:

我试着:

1-  <TextBlock x:Name="tbFootLength" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding CurrentScan.LeftFoot.FootLength}" VerticalAlignment="Top" Margin="10,0,0,0" FontFamily="Calibri" FontSize="15"/>
        


2-  <Grid x:Name="grdMeasures" DataContext="{Binding CurrentScan}" Margin="0,35,0,256" Background="#FFE7E7F3">

     <TextBlock x:Name="tbFootLength" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding LeftFoot.FootLength}" VerticalAlignment="Top" Margin="10,0,0,0" FontFamily="Calibri" FontSize="15"/>
   
    </Grid>       


3-   <Grid x:Name="grdMeasures" DataContext="{Binding CurrentScan.LeftFoot}" Margin="0,35,0,256" Background="#FFE7E7F3">

     <TextBlock x:Name="tbFootLength" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding FootLength}" VerticalAlignment="Top" Margin="10,0,0,0" FontFamily="Calibri" FontSize="15"/>
   
    </Grid>   
1-
2-  
3-   
有什么想法吗


谢谢。

如果
CurrentScan
是定义了
TextBlock
的窗口的属性,则此绑定应该可以工作:

Text="{Binding CurrentScan.LeftFoot.FootLength, 
    RelativeSource={RelativeSource AncestorType=Window}}"

不要忘记初始化
CurrentScan
属性,即设置它。

在哪里定义了
CurrentScan
?在与
TextBlock
Text=“{Binding CurrentScan.LeftFoot.FootLength}”相同的窗口中,如果您已将窗口的DataContext设置为自身,例如通过
DataContext=this
在其constructor.mm8中,我编辑了问题,添加了CurrentScan的初始化部分。@CoskunOzogul:然后尝试设置绑定的源。请看我的答案。我尝试了这些解决方案。它不起作用。我想我遗漏了什么。窗口中是否有
TextBlock
?请发布您的完整代码。它是这样工作的:DataContext=this;装载。在xaml文本中,“{Binding ElementName=mw,Path=CurrentScan.LeftFoot.FootLength}”。谢谢您的帮助。如果您绑定到
ElementName
RelativeSource
,则不需要
DataContext=this