ImageButton
.NET 多平臺應用程式 UI (.NET MAUI) ImageButton 檢視結合了 Button 檢視和 Image 檢視,以建立內容為影像的按鈕。 當您用手指按 ImageButton 或用滑鼠按兩下它時,它會指示應用程式執行工作。 不過,與檢視不同的ButtonImageButton是,檢視沒有文字和文字外觀的概念。
ImageButton 會定義下列屬性:
Aspect
型Aspect
別為 的 ,決定影像的縮放方式以符合顯示區域。BorderColor
型 Color別為 的 ,描述按鈕的框線色彩。BorderWidth
型double
別為的 ,會定義按鈕框線的寬度。Command
型 ICommand別為 的 ,定義點選按鈕時所執行的命令。CommandParameter
型object
別為 的 ,是傳遞至Command
的參數。CornerRadius
類型int
為 的 ,描述按鈕框線的圓角半徑。IsLoading
型bool
別為 的 ,表示影像的載入狀態。 此屬性的預設值為false
。IsOpaque
型bool
別為 的 ,會決定 .NET MAUI 在轉譯影像時是否應該將影像視為不透明。 此屬性的預設值為false
。IsPressed
型bool
別為 的 ,表示是否按下按鈕。 此屬性的預設值為false
。Padding
型Thickness
別為 的 ,會決定按鈕的邊框間距。Source
類型 ImageSource為 的 ,指定要顯示為按鈕內容的影像。
這些屬性是由 BindableProperty 物件所支援,這表示這些屬性可以是數據系結的目標,並設定樣式。
屬性 Aspect
可以設定為列舉的 Aspect
其中一個成員:
Fill
- 縮放影像以完整且完全填滿 ImageButton。 這可能會導致影像扭曲。AspectFill
- 裁剪影像,使其填滿 ImageButton ,同時保留外觀比例。AspectFit
- 信箱影像(如有必要),讓整個影像符合 ImageButton,並將空白空間新增至頂端/底部或側邊,視影像寬或高而定。 這是列舉的Aspect
預設值。Center
- 將影像置中 ImageButton ,同時保留外觀比例。
此外, ImageButton 定義 Clicked
、 Pressed
和 Released
事件。 Clicked
當點選與手指或滑鼠指標從按鈕表面放開時ImageButton,就會引發 此事件。 Pressed
當手指按下 時ImageButton,會引發 事件,或按下滑鼠按鈕時,指標位於 上方ImageButton。 Released
放開手指或滑鼠按鈕時,就會引發 事件。 一般而言, Clicked
事件也會與 Released
事件同時引發,但如果手指或滑鼠指標在放開之前會離開 表面 ImageButton , Clicked
則可能不會發生此事件。
重要
ImageButton必須將其 IsEnabled
屬性設定為 true
,才能回應點選。
建立 ImageButton
若要建立影像按鈕,請建立 ImageButton 對象、設定其 Source
屬性並處理其 Clicked
事件。
下列 XAML 範例示範如何建立 ImageButton:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="ControlGallery.Views.XAML.ImageButtonDemoPage"
Title="ImageButton Demo">
<StackLayout>
<ImageButton Source="image.png"
Clicked="OnImageButtonClicked"
HorizontalOptions="Center"
VerticalOptions="Center" />
</StackLayout>
</ContentPage>
屬性 Source
會指定 出現在中的 ImageButton影像。 事件 Clicked
會設定為名為的 OnImageButtonClicked
事件處理程式。 此處理程式位於程式代碼後置檔案中:
public partial class ImageButtonDemoPage : ContentPage
{
int clickTotal;
public ImageButtonDemoPage()
{
InitializeComponent();
}
void OnImageButtonClicked(object sender, EventArgs e)
{
clickTotal += 1;
label.Text = $"{clickTotal} ImageButton click{(clickTotal == 1 ? "" : "s")}";
}
}
在此範例中,點選 時 ImageButton ,會 OnImageButtonClicked
執行 方法。 自 sender
變數負責 ImageButton 此事件。 您可以使用這個來存取ImageButton物件,或區分共用相同Clicked
事件的多個ImageButton物件。 處理程式 Clicked
會遞增計數器,並在 中 Label顯示計數器值:
要建立 的 ImageButton 對等 C# 程式代碼為:
Label label;
int clickTotal = 0;
...
ImageButton imageButton = new ImageButton
{
Source = "XamarinLogo.png",
HorizontalOptions = LayoutOptions.Center,
VerticalOptions = LayoutOptions.CenterAndExpand
};
imageButton.Clicked += (s, e) =>
{
clickTotal += 1;
label.Text = $"{clickTotal} ImageButton click{(clickTotal == 1 ? "" : "s")}";
};
使用命令介面
應用程式可以回應 ImageButton 點選,而不需要處理 Clicked
事件。 會 ImageButton 實作稱為 命令 或 命令介面的 替代通知機制。 這包含兩個屬性:
Command
型 ICommand別 為 ,這是命名空間中System.Windows.Input
定義的介面。CommandParameter
類型的Object
屬性。
此方法適用於與數據系結的連線,特別是在實作 Model-View-ViewModel (MVVM) 模式時。 如需命令的詳細資訊,請參閱 Button 文章中的使用命令介面。
按下併發佈 ImageButton
Pressed
當手指按下 時ImageButton,會引發 事件,或按下滑鼠按鈕,且指標位於 上方ImageButton。 Released
放開手指或滑鼠按鈕時,就會引發 事件。 一般而言, Clicked
事件也會與 Released
事件同時引發,但如果手指或滑鼠指標在放開之前會從表面 ImageButton 移開,則 Clicked
可能不會發生此事件。
如需這些事件的詳細資訊,請參閱 Button 文章中的按鈕並加以釋放。
ImageButton 視覺狀態
ImageButtonPressed
VisualState具有 ,可在按下時起始視覺效果變更ImageButton,如果啟用則為 。
下列 XAML 範例示範如何定義狀態的 Pressed
視覺狀態:
<ImageButton Source="image.png"
...>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal">
<VisualState.Setters>
<Setter Property="Scale"
Value="1" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Pressed">
<VisualState.Setters>
<Setter Property="Scale"
Value="0.8" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="PointerOver" />
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</ImageButton>
在此範例中,會Pressed
VisualState指定按下 時ImageButton,其 Scale
屬性會從預設值 1 變更為 0.8。 Normal
VisualState指定 當 處於正常狀態時ImageButton,其 Scale
屬性會設定為 1。 因此,整體效果是按下 時 ImageButton ,會重新調整為稍微小一點,而釋放 時 ImageButton ,它會重新調整為其預設大小。
重要
ImageButton若要讓 返回其Normal
狀態,VisualStateGroup
也必須定義PointerOver
狀態。 如果您使用 .NET MAUI 應用程式項目範本所建立的樣式ResourceDictionary
,則您已經有定義狀態的PointerOver
隱含ImageButton
樣式。
如需視覺狀態的詳細資訊,請參閱 視覺狀態。
停用 ImageButton
有時候應用程式會進入按兩下不是有效作業的狀態 ImageButton 。 在這些情況下, ImageButton 應該藉由將其 IsEnabled
屬性設定為 false
來停用 。