gpt4 book ai didi

wpf - Caliburn Micro——更改 BindableCollection 中的单个项目

转载 作者:行者123 更新时间:2023-12-02 05:42:27 24 4
gpt4 key购买 nike

我在 ListView 中显示一个集合,每个 ListView 项目都有自己的按钮用于下载相关的 pdf。

我想点击按钮并在其位置显示一个不确定的进度条。

在我的示例项目中,我只是想在单击按钮时反转项目的下载状态。

我的 View 模型代码:

private BindableCollection<IDownloadable> _downloadables;
public BindableCollection<IDownloadable> Downloadables
{
get { return _downloadables; }
set
{
_downloadables = value;
NotifyOfPropertyChange(() => Downloadables);
}
}

public void Download(IDownloadable item)
{
item.Downloading = !item.Downloading;
NotifyOfPropertyChange(() => Downloadables);
}

public ShellViewModel()
{
Downloadables = new BindableCollection<IDownloadable>();

Downloadables.Add(new DownloadString("String"));
Downloadables.Add(new DownloadString("String"));
Downloadables.Add(new DownloadString("String"));
}

我的看法:

<ListView Name="Downloadables"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<Grid Background="White">
<ToggleButton Content="{Binding MyString}"
Width="50"
Height="50"
HorizontalAlignment="Center"
VerticalAlignment="Center"
cal:Message.Attach="Download($dataContext)"/>
<spark:SprocketControl Width="30"
Height="30"
HorizontalAlignment="Center"
VerticalAlignment="Center"
AlphaTicksPercentage="50"
Interval="60"
IsIndeterminate="True"
LowestAlpha="50"
StartAngle="-90"
TickColor="LawnGreen"
TickCount="12"
TickWidth="3"
Visibility="{Binding Downloading, Converter={StaticResource BooleanToVisibilityConverter}}"/>
</Grid>

</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>

我原以为 NotifyOfPropertyChanged 会告诉集合项进行更新,但事实并非如此。

最佳答案

这与收藏无关。模板绑定(bind)到项目本身。它对集合一无所知。这意味着,您需要在项目本身中实现通知 ( INotifyPropertyChanged)。

关于wpf - Caliburn Micro——更改 BindableCollection 中的单个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10758499/

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