Я хотел бы передать Xamarin.Forms.Button
в свой собственный Command
как CommandParameter
в мою ViewModel. Я знаю, как это сделать из кода, расположенного, например, ...Как передать кнопку в качестве параметра CommandParameter из XAML на странице Xamarin.Forms?
XAML(с большинством свойств пропускали для краткости)
<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; }
}
... НО можно ли объявить CommandParameter
в самой XAML? Или, другими словами, какой синтаксис привязки задает параметр самой кнопке?
<Button x:Name="myButton"
Text="My Button"
Command="{Binding ButtonClickCommand}"
CommandParameter="{[WHAT WOULD GO HERE]}"/>
Кстати я уже пробовал CommandParameter="{Binding RelativeSource={RelativeSource Self}}"
и это не сработало.
Спасибо,
Зачем вам нужна кнопка на вашей виртуальной машине? –
Привет @AlexAnderson. Да, я тоже не слишком обожаю. Мы представляем Xamarin.Forms в существующий проект Xamarin iOS. Просто экспериментируйте с способами получения собственного UIPopoverController для показа с страницы Xamarin.Form. Нет поддержки форм для всплывающих окон, поэтому просто глядя на пути вокруг этого на данный момент, и одно из препятствий - мне нужно знать, какой UIElement отображать всплывающее окно ... поэтому передавая кнопку. Как я уже сказал ... вроде бы чувствует себя. Я попробую ваше предложение ниже. Спасибо –
Что касается всплывающих окон, ознакомьтесь с реализацией 'ContentPage.DisplayActionSheet (...)' - если лист действий недостаточно, вы можете перепроектировать код, который показывает его. И получение ссылки Button по-прежнему требует поиска ссылки UIButton. Вам будет лучше с помощью специального рендеринга –