所以,我有一個自定義控制元件CusConA,它基本上像一個文本框一樣作業 - 你輸入你需要的金額,我在下面有一個按鈕,通過點擊它可以在某處保存該金額(來自 CusConA),這正在作業美好的。
但是我想通過單擊該頁面上的任意位置(類似于 asp.net 中的 OnBlur)來嘗試相同的功能,或者更準確地說,當我的 CusConA 不再是焦點時。
通過執行代碼中使用 --> 顯示的操作,我實作了某種解決方案,這樣當按任意位置時,即使我從未嘗試寫一個數量,命令也會被執行。
因此,要嘗試圈出我的問題,我需要僅在鍵入一些數量并單擊其他位置后才執行此命令。我怎樣才能做到這一點?
<Frame
Margin="55,0"
Padding="0"
BorderColor="Blue"
CornerRadius="30">
<StackLayout Orientation="Horizontal">
<Label
Margin="10"
FontAttributes="Bold"
FontSize="20"
HorizontalTextAlignment="Center"
Text="RSD"
TextColor="Some text"
VerticalTextAlignment="Center" />
<customControls:CusConA
Margin="0,0,15,0"
HorizontalOptions="FillAndExpand"
Keyboard="Numeric"
Placeholder="0,00"
PlaceholderColor="Gray"
Text="Some text"
TextColor="Black" >
--> <customControls:CusConA.Behaviors>
<xct:EventToCommandBehavior EventName="Unfocused" Command="{Binding DoSomething}" ></xct:EventToCommandBehavior>
</customControls:CusConA.Behaviors>
</customControls:CusConA>
</StackLayout>
</Frame>
uj5u.com熱心網友回復:
您可以更改 DoSomething 以檢查金額是否已輸入?可能涉及向您的控制元件添加布爾屬性:
bool CanExecute { get; set; }
然后將“金額”系結到其 setter 設定CanExecute = true;或的屬性CanExecute = false;,具體取決于是否輸入了金額。就像是:
string Amount
{
...
set {
_amount = value;
myControl.CanExecute = value.Count > 0;
}
}
然后將DoSomething身體改為
if (this.CanExecute) { ... }
或者,可以使用其他技術來進行更改以Amount觸發對屬性的更改myControl。
要點是:
- 添加
CanExecute屬性,因此可以告訴控制何時執行該命令有效。 - 使用某種技術
myControl.CanExecute從其他地方系結或觸發更改。
uj5u.com熱心網友回復:
我想你可以用它EventToCommandBehavior來實作這個功能。
EventToCommandBehaviorXamarin.Forms示例中有一個示例(請參閱此處)。
<ContentPage.BindingContext>
<focusapp:MyViewModel></focusapp:MyViewModel>
</ContentPage.BindingContext>
<StackLayout>
<Entry>
<Entry.Behaviors>
<Behaviors:EventToCommandBehavior
EventName="Unfocused"
Command="{Binding EntryUnfocused}" />
</Entry.Behaviors>
</Entry>
</StackLayout>
并EntryUnfocused在您的 viewmodel.cs(例如MyViewModel)中定義如下:
MyViewModel.cs
public class MyViewModel
{
public ICommand EntryUnfocused { get; protected set; }
public MyViewModel() {
EntryUnfocused = new Command(CompletedCommandExecutedAsync);
}
private void CompletedCommandExecutedAsync(object param)
{
System.Diagnostics.Debug.WriteLine("------------> come here....");
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/454205.html
標籤:xml xamarin xamarin.forms xamarin.android
下一篇:iOS將舊專案轉換為使用UI
