gpt4 book ai didi

c# - 无法通过按钮删除正在使用的图像

转载 作者:太空狗 更新时间:2023-10-30 01:25:29 26 4
gpt4 key购买 nike

我有一个 wpf 应用程序,它有一个按钮用于用户硬盘驱动器上特定路径下的每个文件夹。每个文件夹都包含显示在按钮上的图像和单击按钮时运行的文件。这是我用于按钮的模板:

   <DataTemplate x:Key="ProgramItemDataTemplate">
<Button Style="{StaticResource ButtonStyle}" Click="Program_Click" Tag="{Binding Key}">
<Button.ContextMenu>
<ContextMenu>
<MenuItem x:Name="DeleteMenuItem" Click="DeleteMenuItem_Click" Header="Delete" Tag="{Binding Key}" />
</ContextMenu>
</Button.ContextMenu>
<StackPanel>
<Image Source="{Binding Value}" MaxWidth="200" MaxHeight="175"></Image>
<TextBlock Text="{Binding Key,Converter={StaticResource PathToNameConverter2}}" TextWrapping="Wrap" TextAlignment="Center" />
</StackPanel>
</Button>
</DataTemplate>

绑定(bind)值是图像的路径,绑定(bind)键是单击按钮时运行的另一个文件的路径。问题是 DeleteMenuItem 函数。我想删除包含图像的文件夹,但它不会让我删除,因为按钮正在使用图像文件。我如何才能释放我的应用程序使用的图像,以便我可以安全地删除该文件夹?

最佳答案

默认情况下 BitmapImage 的 BitmapCacheOptionOnDemand 您可以通过拥有自己的 ValueConverter 将其更改为 OnLoad,这应该可以解决您的问题。

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
BitmapImage image = new BitmapImage();
image.BeginInit();
image.CacheOption = BitmapCacheOption.OnLoad;
image.UriSource = new Uri(value.ToString());
image.EndInit();
return image;
}

<Image Source="{Binding Path, Converter={StaticResource ImageConverter}}"/>

关于c# - 无法通过按钮删除正在使用的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6830430/

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