绑定到指定的XML元素

时间:2009-03-20 10:36:57

标签: .net wpf data-binding xaml xpath

简而言之:我想定义用于XAML-Button的XML ButtonSettings元素,并在应用于该Button的样式中使用所选ButtonSettings元素的子元素。

这可能吗?

XML示例:

<Buttons>
  <ButtonSettings ID="Bye">
    <Text lang="NL">Doei!</Text>
    <Text lang="DE">Tsusch!</Text>
    <Text lang="FR">Bonjour</Text>
    <Text lang="EN">CU</Text>
    <Image>D:\bye.PNG</Image>
  </ButtonSettings>
</Buttons>

对于每个按钮,我想选择要使用的ButtonSettings,指定它的ID。然后,我想将ButtonSettings-element作为绑定或datacontext传递给样式。然后将在样式中使用所选元素的子元素(例如,文本和图像)。

选择和定义按钮的内容非常有效,只要我直接在按钮上定义它而不是在样式中定义。 这是我用于单个按钮的XAML:

<Button
            x:Name="ByeButton" 
            DataContext="{StaticResource dataProvider}">
            <Button.Content>
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition/>
                        <RowDefinition/>
                    </Grid.RowDefinitions>
                    <TextBlock Grid.Row="0">
                        <TextBlock.Text>
                            <Binding XPath="//ButtonSettings[@ID='Bye']/Text[@lang='FR']" />
                        </TextBlock.Text>                        
                    </TextBlock>
                    <Image Grid.Row="1" Width="20" Height="20">
                        <Image.Source>
                            <Binding XPath="//ButtonSettings[@ID='Bye']/Image" />
                        </Image.Source>
                    </Image>
                </Grid>
            </Button.Content>
        </Button>

我希望能够为每个按钮定义// ButtonSettings [@ ID ='id']并让一个样式处理其余的布局按钮并放入内容和文本。 可以这样做吗?

1 个答案:

答案 0 :(得分:1)

我认为你正在寻找一个ItemsControl并将你的按钮放在一个以你的DataType为目标的DataTemplate中。