【问题标题】:XAML/Blend dependent data bindingXAML/Blend 依赖数据绑定
【发布时间】:2010-08-26 21:56:23
【问题描述】:

我想创建一个将绑定到 XPath 的列表框,相对于其他列表框的当前选定项。

它使用 XmlDataProvider 获取数据,XML 文件如下所示:

<Programs>
    <Program name="...">
        <Step name="..."/>
        <Step name="..."/>
    </Program>
    <Program name="another">

    ...

</Programs

因此,“父”列表框列出了所有程序,而“子”列表框仅显示当前程序的步骤。 这种类型的绑定叫什么?

【问题讨论】:

    标签: wpf xaml blend


    【解决方案1】:

    给你。希望这能回答您的问题。

    <Window x:Class="StackOverflow.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:local="clr-namespace:StackOverflow"
            xmlns:uc="clr-namespace:StackOverflow.UserControls"
            Title="MainWindow" Height="350" Width="525">
        <Window.Resources>
            <XmlDataProvider x:Key="xml">
                <x:XData>
                    <Programs xmlns="">
                        <Program name="Program">
                            <Step name="Step1"/>
                            <Step name="Step2"/>
                        </Program>
                        <Program name="Program2">
                            <Step name="Step3"/>
                            <Step name="Step4"/>
                        </Program>
                    </Programs>
                </x:XData>
            </XmlDataProvider>
        </Window.Resources>
    
        <Grid>
            <StackPanel>
                <ListBox x:Name="parent" ItemsSource="{Binding Source={StaticResource xml}, XPath=Programs/Program}" 
                         Height="100">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding XPath=@name}"/>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
    
                <ListBox DataContext="{Binding ElementName=parent, Path=SelectedItem}" ItemsSource="{Binding XPath=Step}" 
                         Height="100">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding XPath=@name}"/>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
            </StackPanel>
    
        </Grid>
    </Window>
    

    【讨论】:

    • 对不起,我花了一段时间才回答,我有一段时间没有靠近电脑。谢谢,这清除了一些东西!
    猜你喜欢
    • 2011-06-25
    • 2014-01-09
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2011-12-20
    • 2017-03-04
    • 2017-12-18
    相关资源
    最近更新 更多