我正在尝试更改按钮的单击事件的图像源。我的意思是,当用户单击按钮时,图像源将会改变。我可以改变一切,比如文本颜色,背景颜色,高度......除了图像源,我什至不知道这是否可能。
这个按钮
<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 中指定的图像源,所以我将其删除并将其放入构造函数中,但仍然是同样的问题。
在 .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
。