ItemsControl中的不同ItemSource

时间:2018-03-19 16:15:27

标签: wpf xaml

<ItemsControl ItemsSource="{Binding Vwr.Table.Vals, UpdateSourceTrigger=PropertyChanged}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
            <TextBlock x:Name="SearchCol" Text="{Binding Col}" Style="{StaticResource tabTextBlock}"/>
            <TextBox x:Name="SearchText" Text="{Binding Filter, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="200">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="TextChanged">
                        <i:InvokeCommandAction Command="{Binding Path=DataContext.Modules.SelectedModule.Vwr.Table.ExpandBoMCommand, RelativeSource={RelativeSource Mode=FindAncestor,
                                     AncestorType={x:Type Window}}, UpdateSourceTrigger=PropertyChanged}" CommandParameter="{Binding Col}"/>
                    </i:EventTrigger>
                </i:Interaction.Triggers>
            </TextBox>
            <TextBlock Text="{Binding CTStr}" Style="{StaticResource tabTextBlock}"/>
            </StackPanel>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

更新

我很近!我找到了一种方法来获取我需要的数据,现在我的问题是访问这两个数据。命令参数只能传递一个。

更新2

我传递了整个dataItem

1 个答案:

答案 0 :(得分:2)

要在WPF中使这项工作至少有几个选项:

选项1:

  1. 为ItemsControl设置DataContext
  2. 绑定ItemsControls ItemsSource
  3. 为您的ItemsControl命名
  4. 使用ElementName和Path
  5. 绑定命令

    对于步骤1-3,您可以使用以下示例:

    <ListView DataContext="{Binding MyVm}" x:Name="Items" ItemsSource="{Binding Items}" IsItemClickEnabled="False">
    

    对于第4步:

    <core:InvokeCommandAction Command="{Binding ElementName=Items, Path=DataContext.MyCommand}"/>
    

    选项2:

    在命令中使用RelativeSource AncestorType绑定。