xamarin формирует командный вопрос - PullRequest
0 голосов
/ 27 сентября 2018

У меня странная проблема: я использую Prism в своем приложении xamarin forms.

Существует команда, которая перемещает пользователя на специальную страницу.XAML-код приведен ниже

<ContentPage.ToolbarItems>
    <ToolbarItem Icon="add_circle_white_48dp.png" Command="{Binding NavigateToPage}" CommandParameter="Asset" />
    <ToolbarItem Text="Detay" Command="{Binding NavigateToPage}" CommandParameter="AssetTabbed" />
</ContentPage.ToolbarItems>

эта команда NavigateToPage прекрасно работает здесь, но если я хочу добавить эту команду в представлении списка Viewcell ContextActions, как показано ниже

                            <ViewCell.ContextActions>
                                <MenuItem Text="Detay" IsDestructive="False"
                                          Command="{Binding NavigateToPage}" CommandParameter="AssetTabbed" />
                            </ViewCell.ContextActions>

команда не являетсяработая

решено:

Я изменяю контекст видовой ячейки, как показано ниже:

<ViewCell.ContextActions>
    <MenuItem Text="Detay" IsDestructive="False"
                Command="{Binding Path=BindingContext.NavigateToPage , Source={x:Reference Name=AssetListDefaultListView}}" 
                CommandParameter="AssetTabbed" />
</ViewCell.ContextActions>

и добавляю x: Имя свойства в listView

<ListView x:Name="AssetListDefaultListView">

1 Ответ

0 голосов
/ 27 сентября 2018

ViewCell имеет другой контекст привязки.Вам нужно будет сделать это:

 <ListView ItemsSource="{Binding Collection}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <Button Command="{Binding BindingContext.YourCommand,Source={x:Reference page}}"
                            CommandParameter="{Binding .}" />
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>


public class YourPageViewModel : BindableBase
{
    public YourPageViewModel()
    {
        YourCommand = new DelegateCommand<MyModel>( ExecuteMyCommand );
    }

    public ObservableCollection<YourModel> Collection { get; set; }

    public DelegateCommand<YourModel> YourCommand { get; }

    private void ExecuteYourCommand( YourModel model )
    {
        // Your Logic
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...