使用ItemSource绑定访问ListView中的另一个数据上下文

本文关键字:另一个 数据 上下文 ListView ItemSource 绑定 访问 使用 | 更新日期: 2023-09-27 18:26:40

我正在使用XAML进行MVVM项目。在具有ItemSource绑定的ListView内部操作时,访问外部元素的属性时遇到问题。

XAML:

<ListView x:Name="BibTexFields" Height="422" ItemsSource="{Binding BibTexFields}">
    <ListView.ItemTemplate>
        <DataTemplate>
           <Grid Width="450">
              <TextBlock Foreground="Black" Text="{Binding Field.Name}"/>
              <CheckBox HorizontalAlignment="Right" IsChecked="{Binding IsChecked, Mode=TwoWay}" Command="{Binding UpdateFilledFieldsCommand}"/> 

BibTexFields是我的ViewModel中的一个属性,它也是我的DataContext。UpdateFilledFieldsCommand 也是

XAML:

xmlns:vm="using:StudyConfigurationClient.ViewModels"
mc:Ignorable="d" d:DataContext="{d:DesignInstance vm:CreateStudyViewModel}">
<Grid x:Name="FieldOuter">
    <Border BorderBrush="Gray" BorderThickness="2" Margin="0, 0, 5, 0">

ViewModel:

private ObservableCollection<ChosenField> _bibTexFields;
public ObservableCollection<ChosenField> BibTexFields
        {
            get { return _bibTexFields; }
            set
            {
                _bibTexFields = value;
                OnPropertyChanged();
            }
        }

我想做的是从ListView内部访问ViewModel,这样我就可以制作一个绑定到UpdateFilledFieldsCommand属性的Command

我试过研究RelativeSource绑定,但似乎无法使其发挥作用。尝试将其绑定到DataContext也不起作用。

使用ItemSource绑定访问ListView中的另一个数据上下文

您也可以使用ElementName:

 <CheckBox HorizontalAlignment="Right" IsChecked="{Binding IsChecked, Mode=TwoWay}" Command="{Binding DataContext.UpdateFilledFieldsCommand, ElementName=BibTexFields}"/>

然而,RelativeSource也应该起作用。通过快速搜索,我发现:如何将WPF绑定与RelativeSource一起使用?它看起来很好,但我不知道是否所有的功能都存在于UWP应用程序中。