gpt4 book ai didi

c# - 使用 ItemSource 绑定(bind)访问 ListView 内的另一个数据上下文

转载 作者:太空宇宙 更新时间:2023-11-03 12:54:57 25 4
gpt4 key购买 nike

我正在使用 XAML 开发一个 MVVM 项目。在具有 ItemSource 绑定(bind)的 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">

View 模型:

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

我想做的是从 ListView 内部访问 ViewModel,这样我就可以创建一个绑定(bind)到UpdateFilledFieldsCommand 属性。

我已经尝试研究 RelativeSource 绑定(bind),但似乎无法让它发挥作用。尝试将其绑定(bind)到 DataContext 也不起作用。

最佳答案

您还可以使用元素名称:

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

但是,RelativeSource 也应该有效。通过快速搜索,我发现了这个:How do I use WPF bindings with RelativeSource?看起来不错,但我不知道 UWP 应用程序中是否包含所有功能。

关于c# - 使用 ItemSource 绑定(bind)访问 ListView 内的另一个数据上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34239363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com