1
목록보기 컨트롤 내부의 프레임에 TapGesture에 명령을 바인딩하려고합니다. 프레임은 목록보기에 대한 데이터 템플릿 내부에 정의됩니다.명령 바인딩이 Xamarin Forms의 Listview 내에서 작동하지 않습니다.
<ListView x:Name="listView"
ItemsSource="{Binding LstSrc}"
RowHeight="75" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid Margin="0"
Padding="0"
BackgroundColor="White">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Frame Grid.Column="0" BindingContext="{Binding Item1}"
Margin="0" Padding="0" x:Name="f1">
<Frame.GestureRecognizers>
<TapGestureRecognizer Command="{Binding BindingContext.GoToPageCommand, Source={x:Reference this}}"
CommandParameter="{Binding BindingContext.Id, Source={x:Reference f1}}"/>
</Frame.GestureRecognizers>
</Frame>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
여기 LstSrc 및 GoToPageCommand는 viewmodel 클래스에 정의되어 있습니다. Item1은 LstSrc 안에 정의되어 있습니다. 보기 모델 내에 정의
위임 명령
public DelegateCommand<TappedEventArgs> GoToPageCommand => new DelegateCommand<TappedEventArgs>(
async s => {
await _navigationService.NavigateAsync("NextPage");
});
입니다 그러나 도청에, 제어 명령 방법에 오는되지 않습니다.
바인딩 출력에있는 BindingContext를 지정하지 않아도됩니다. 디버그 출력 창을 보면 바인딩 오류가 나타날 수 있습니다. 바인딩 경로의 BindingContext없이 GoToPageCommand에 바인딩하면됩니다. –