Binding ElementName. Does it use Visual Tree or Logical Tree

I think it’s logical tree. When using ControlTemplates, you’re replacing one visual tree with another, but I don’t think you can reference the names defined inside of the ControlTemplate. For example: <Page xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation” xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”> <Grid> <Grid.Resources> <ControlTemplate x:Key=”Foo” TargetType=”Button”> <Border x:Name=”border” Background=”Red”> <Label Content=”{TemplateBinding Content}”></Label> </Border> </ControlTemplate> </Grid.Resources> <Grid.ColumnDefinitions> <ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <Button x:Name=”buttonFoo” Background=”Green” … Read more

Getting element’s name in XPATH

Use name(). (Find docs for newer versions of the XPath language here.) Here are modified versions of your example: Works in XPath 2.0+ only: //element/*[@id=’elid’]/name() Works in XPath 1.0 and 2.0+*: name(//element/*[@id=’elid’]) *If using 2.0+, the expression //element/*[@id=’elid’] must only return one element. Otherwise you’ll get an error like A sequence of more than one … Read more