Vorrei passare uno Xamarin.Forms.Button
nel proprio Command
come CommandParameter
al mio ViewModel. So come ottenere ciò dal codice alla base, ad es. ...Come si passa il pulsante come CommandParameter da XAML in una pagina Xamarin.Forms?
XAML(con la maggior parte delle proprietà perso fuori per brevità)
<Button x:Name="myButton"
Text="My Button"
Command="{Binding ButtonClickCommand}"/>
XAML.cs
public partial class MyTestPage
{
public MyTestPage()
{
InitializeComponent();
myButton.CommandParameter = myButton;
}
}
ViewModel
public class MyViewModel : ViewModelBase
{
public MyViewModel()
{
ButtonClickCommand = new Command(
(parameter) =>
{
var view = parameter as Xamarin.Forms.Button;
if (view != null)
{
// Do Stuff
}
});
}
public ICommand ButtonClickCommand { get; private set; }
}
... MA è possibile dichiarare lo CommandParameter
nello stesso XAML? O in altre parole qual è la sintassi del binding per impostare il parametro sul pulsante stesso?
<Button x:Name="myButton"
Text="My Button"
Command="{Binding ButtonClickCommand}"
CommandParameter="{[WHAT WOULD GO HERE]}"/>
btw ho già provato CommandParameter="{Binding RelativeSource={RelativeSource Self}}"
e che non ha funzionato.
Grazie,
Perché è necessario il pulsante nella VM? –
Ciao @AlexAnderson. Sì, non ne sono molto entusiasta. Stiamo introducendo Xamarin.Forms in un progetto Xamarin iOS esistente. Sperimenta solo come ottenere un UIPopoverController nativo da mostrare da una pagina Xamarin.Form. Non esiste il supporto per i moduli per i popup, quindi, osservando solo i modi per aggirare il problema al momento e uno degli ostacoli, è necessario conoscere quale UIElement mostrare il popup da ... quindi passare il pulsante. Come ho detto ... sembra un po 'cavolo. Vado a provare il tuo suggerimento qui sotto. Grazie –
Per quanto riguarda i popup, controlla l'implementazione di 'ContentPage.DisplayActionSheet (...)' - se il foglio d'azione non è abbastanza puoi decodificare il codice che lo mostra. E ottenere il riferimento Button richiederà comunque di trovare il riferimento UIButton da quello. Stai andando meglio con un renderizzatore personalizzato –