C # Эквивалент Xaml's CommandParameter = "{Binding.}" - PullRequest
0 голосов
/ 23 мая 2018

Я пишу код своего пользовательского интерфейса на C #.Он имеет ListView с ItemSource как List<MyClass>.Когда я щелкаю по ячейке, я хочу передать весь объект MyClass в связанную команду.

Во время разработки в XAML я наткнулся на CommandParameter = "{Binding.}".Делая это, я смог отправить весь объект.

 <Label.GestureRecognizers>
     <TapGestureRecognizer Command="{Binding BindingContext.MyId, Source={x:Reference MyList}}"
    CommandParameter="{Binding .}" />
    </Label.GestureRecognizers>

Я хочу знать c # эквивалент "{Binding .}".

Ответы [ 3 ]

0 голосов
/ 24 мая 2018

"{Binding .}" просто равно new Binding(".").Но CommandParameter="{Binding .}" равно `tapGestureRecognizer.SetBinding (TapGestureRecognizer.CommandParameterProperty, новая привязка (". ")).

0 голосов
/ 24 мая 2018

Потратив почти часы применения всевозможных перестановок и комбинаций, вот «уловка», которая сработала для меня:

Label lbl = new Label();
lbl.SetBinding(Label.TextProperty, modelProperty.Name, BindingMode.TwoWay);
TapGestureRecognizer tgr= new TapGestureRecognizer
{
  Command = BindingContext.CellClickedCommand,
};
tgr.SetBinding(TapGestureRecognizer.CommandParameterProperty, ".");
lbl.GestureRecognizers.Add(tgr);

Я думаю, что Microsoft должна предоставить лучшие документы для форм Xamarin, поскольку не всеразработчики работают с XAML все время.Также большинство документов не с MVVM.

0 голосов
/ 23 мая 2018

Вот пример того, как связать CommandParameterProperty TapGestureRecognizer со свойством Label's Text, используя C #

public MainPage()
{
    var labelTappedGestureRecognizer = new TapGestureRecognizer
    {
        Command = new Command<string>(async labelText => await DisplayAlert("Label Tapped", labelText, "OK"))
    };

    var myLabel = new Label
    {
        Text = "This is my label",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    myLabel.GestureRecognizers.Add(labelTappedGestureRecognizer);
    labelTappedGestureRecognizer.SetBinding(TapGestureRecognizer.CommandParameterProperty, new Binding(nameof(Label.Text), source: myLabel));

    Content = myLabel;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...