如何在.NET MAUI 上的 C# 中更改按钮图像源?

问题描述 投票:0回答:1

我正在尝试更改按钮的单击事件的图像源。我的意思是,当用户单击按钮时,图像源将会改变。我可以改变一切,比如文本颜色,背景颜色,高度......除了图像源,我什至不知道这是否可能。

这个按钮

<Button x:Name="status" Text="Status 1"   ImageSource="verified.png"  BackgroundColor="#45D991" HeightRequest="38" WidthRequest="110" HorizontalOptions="End" Grid.Column="3" Grid.ColumnSpan="2" Grid.Row="1" Clicked="Button_Clicked" />

我尝试了两件事,首先很简单:

private void Button_Clicked(object sender, EventArgs e)
    {
        status.ImageSource = "load.png";
    }

第二次尝试:

private void Button_Clicked(object sender, EventArgs e)
    {
        Button statusButton = (Button)sender;
        statusButton.ImageSource = "right.png";
       
    }

但是他们的图像都没有一样, 我尝试的最后一件事:我认为不可能更改在 xaml 中指定的图像源,所以我将其删除并将其放入构造函数中,但仍然是同样的问题。

c# .net button maui
1个回答
0
投票

在 .NET MAUI 中,您可以通过访问按钮的

ImageSource
属性来动态更改按钮的
Image
。以下是实现这一目标的方法:

首先,确保项目中包含必要的图像文件(

verified.png
load.png
right.png
)。确保这些文件的构建操作设置为“EmbeddedResource”或“BundleResource”,具体取决于您的平台。

接下来,修改 XAML 代码以从按钮中删除

ImageSource
属性:

<Button x:Name="status" Text="Status 1" BackgroundColor="#45D991" HeightRequest="38" WidthRequest="110" HorizontalOptions="End" Grid.Column="3" Grid.ColumnSpan="2" Grid.Row="1" Clicked="Button_Clicked" />

然后,在代码隐藏文件中,您可以处理按钮单击事件并更新

ImageSource
:

private void Button_Clicked(object sender, EventArgs e)
{
    status.ImageSource = ImageSource.FromFile("load.png");
}

确保图像文件(

load.png
right.png
)位于适当的特定于平台的资源文件夹中(例如,适用于 Android 的
Resources
、适用于 iOS 的
Resources
或适用于 UWP 的
Assets
)。

或者,如果您想使用嵌入式资源,您可以更改

ImageSource
分配以使用
FromResource
方法:

status.ImageSource = ImageSource.FromResource("YourNamespace.load.png", typeof(YourPageType).Assembly);

"YourNamespace"
替换为您的项目的命名空间,将
YourPageType
替换为按钮所在 XAML 页面的类型。

通过使用

FromFile
FromResource
方法,您应该能够在单击按钮时动态更改按钮的
ImageSource

© www.soinside.com 2019 - 2024. All rights reserved.