好的,我对 XAML 和 WPF 还很陌生,所以我正在尝试一个学习项目来构建一个周期表。我有一组 XML 元素数据。我在 XAML 中定义了一个控件模板,以将每个化学元素的此信息显示为网格中的按钮:
<ControlTemplate x:Key="elementTemplate" TargetType="{x:Type Button}">
<Grid>
<Rectangle x:Name="backingRect" Margin="2" StrokeThickness="0" RadiusX="3" RadiusY="3" Fill="{TemplateBinding Property=Button.Background}">
<Rectangle.Effect>
<DropShadowEffect BlurRadius="8"/>
</Rectangle.Effect>
</Rectangle>
<Viewbox>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.2*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="0.2*"/>
</Grid.RowDefinitions>
<TextBlock FontWeight="DemiBold" TextAlignment="Center" Grid.Row="0" diag:PresentationTraceSources.TraceLevel="High">
<TextBlock.Text>
<Binding Source="{StaticResource elementData}">
<Binding.XPath>atom[@id='H']/scalar[@dictRef='bo:atomicNumber']</Binding.XPath>
</Binding>
</TextBlock.Text>
</TextBlock>
<TextBlock FontWeight="Bold" TextAlignment="Center" FontSize="28" Grid.Row="1" >
<TextBlock.Text>
<Binding Source="{StaticResource elementData}" >
<Binding.XPath>atom[@id='H']/label[@dictRef='bo:symbol']/@value</Binding.XPath>
</Binding>
</TextBlock.Text></TextBlock >
<TextBlock FontWeight="DemiBold" TextAlignment="Center" Grid.Row="2">1.0021</TextBlock>
</Grid>
</Viewbox>
</Grid>
</ControlTemplate>
现在,这将创建一个静态绑定到我的底层 XML 数据的按钮。我想要做的是@id='H'
用一个表达式替换 XPath 标准,该表达式检索使用此模板的按钮的内容,例如@id={TemplateBinding Button.Content}
(如果可能的话),所以如果我创建这样一个文本内容为“他”的按钮',它将检索 XML 文件中的相应数据,例如质量、原子序数等。在 XAML 中指定这样的动态 XPath 并将其绑定到控件模板上的属性的语法是什么?