【问题标题】:Bind to specified XML-element绑定到指定的 XML 元素
【发布时间】:2009-03-20 10:36:57
【问题描述】:

简而言之:我想定义用于 XAML 按钮的 XML ButtonSettings 元素,并在应用于该按钮的样式中使用所选 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 元素作为绑定或数据上下文传递给样式。然后将在样式中使用所选元素的子元素(例如文本和图像)。

选择和定义按钮的内容非常有效,只要我直接在按钮上而不是在样式中定义它。 这是我为单个按钮提供的 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'] 并让样式处理其余的按钮布局和内容和文本放入。 这个可以吗?

【问题讨论】:

    标签: .net wpf data-binding xaml xpath


    【解决方案1】:

    我认为您正在寻找一个 ItemsControl 并将您的按钮放在针对您的 DataType 的 DataTemplate 中。

    【讨论】:

    • 嗯,重点是我想为每个按钮指定要使用的 ButtonSettings 实例,方法是向 Button 传递 Buttonsettings 实例的 ID。使用 ItemsContol,就像一个 lostbox,列表框指定每个项目获取哪些。那个 qway,我对我的 UI 的控制较少。
    猜你喜欢
    • 2016-02-23
    • 2021-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多