XAML XPath 绑定,DataGrid + ComboBox 与 Xml

问题描述 投票:0回答:1

我确实需要一些帮助。组合框通过显示 Xml 数据按照我想要的方式工作。数据网格正在工作,从 Xml 数据中提取单个记录。我正在努力做的是以下我正在努力解决的问题。

  • 使得当选择组合框项目时,它会更改数据网格的 Xpath 以显示该计划。

我玩过多种东西,例如多重绑定,但我似乎无法让它正常工作。任何帮助将不胜感激。

    <Window.Resources>

      <!-- Data. -->
           <XmlDataProvider x:Key="Schedules" XPath="Schedules">
             <x:XData>
               <Schedules xmlns="">
                 <Schedule Id="0" Name="Week-1"  Saturday="0" Sunday="0" Monday="7.5" Tuesday="7.5" Wednesday="7.5" Thursday="7.5" Friday="7.5" />
                 <Schedule Id="1" Name="Week-2"  Saturday="0" Sunday="0" Monday="7.5" Tuesday="7.5" Wednesday="7.5" Thursday="7.5" Friday="7.5" />
                 <Schedule Id="2" Name="Week-3"  Saturday="7.5" Sunday="7.5" Monday="7.5" Tuesday="7.5" Wednesday="7.5" Thursday="0" Friday="0" />
               </Schedules>
             </x:XData>
           </XmlDataProvider>


    </Window.Resources>
        
    <Grid>

        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>

        <StackPanel Grid.Row="0">
          <ComboBox Name="SchedulesComboBox" Width="200" Height="40" VerticalContentAlignment="Center" 
             ItemsSource="{Binding XPath=//Schedule/@Name, Source={StaticResource Schedules}}" />
        </StackPanel>

        <StackPanel Grid.Row="0">
          <DataGrid Name="DataGrid" Margin="0, 25, 0, 0" Grid.Row="1" ItemsSource="{Binding XPath=//*[@Id\=\'1\'], 
              Source={StaticResource Schedules}, IsAsync=True}" AutoGenerateColumns="False">
            <DataGrid.Columns>
              <DataGridComboBoxColumn Header="Schedule" Width="200" />
              <DataGridTextColumn Header="Saturday" Width="100" Binding="{Binding XPath=@Saturday}" />
              <DataGridTextColumn Header="Sunday" Width="100" Binding="{Binding XPath=@Sunday}" />
              <DataGridTextColumn Header="Monday" Width="100" Binding="{Binding XPath=@Monday}" />
              <DataGridTextColumn Header="Tuesday" Width="100" Binding="{Binding XPath=@Tuesday}" />
              <DataGridTextColumn Header="Wednesday" Width="100" Binding="{Binding XPath=@Wednesday}" />
              <DataGridTextColumn Header="Thursday" Width="100" Binding="{Binding XPath=@Thursday}" />
              <DataGridTextColumn Header="Friday" Width="100" Binding="{Binding XPath=@Friday}" />
            </DataGrid.Columns>
          </DataGrid>
        </StackPanel>


    </Grid>
xml wpf xaml data-binding
1个回答
0
投票

我从未使用过 XPath,我可以提供的唯一提示是使用 ViewModel,将 ComboBox 的 SelectedItem 绑定到视图模型,并将 DataGrid.ItemsSource 绑定到视图模型中的某些派生属性。

或者这不是一个选择?

© www.soinside.com 2019 - 2024. All rights reserved.