将不适用于 ListView 的命令与 Itemsource 绑定
Binding a Command not Working for ListView with Itemsource
我正在尝试添加可点击的 ListView-Cell,但我可能与绑定发生冲突。
每个单元格都应该像一个导航到包含给定对象的新页面的按钮。
我已经尝试过 "TapGestureRecognizer".
<ListView x:Name="ListView" HasUnevenRows="True" SelectionMode="Single" >
<ListView.ItemsSource>
<x:Array Type="{x:Type clients:MinRepresentation}">
<clients:MinRepresentation Id="123456789" PlannedStartTime="01-01-2019" PlannedEndTime="01-12-2019" />
<clients:MinRepresentation Id="555555555" PlannedStartTime="12-12-2019" PlannedEndTime="12-12-2019" />
</x:Array>
</ListView.ItemsSource>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid Padding="5">
<Grid.GestureRecognizers>
<TapGestureRecognizer Command="{Binding OrderDetailsCommand}"/>
</Grid.GestureRecognizers>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
[Cell-Template]
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
找到了简单的解决方案...
XAML:
<ListView HasUnevenRows="True" SelectionMode="Single" ItemsSource="{Binding VisibleOrders}" ItemSelected="OnListViewItemSelected" ItemTapped="OnListViewItemTapped"/>
视图模型:
public IList<MinRepresentation> VisibleOrders { get; private set; }
void OnListViewItemSelected(object sender, SelectedItemChangedEventArgs e)
{
MinRepresentation selectedItem = e.SelectedItem as MinRepresentation;
}
void OnListViewItemTapped(object sender, ItemTappedEventArgs e)
{
MinRepresentation tappedItem = e.Item as MinRepresentation;
}
我正在尝试添加可点击的 ListView-Cell,但我可能与绑定发生冲突。
每个单元格都应该像一个导航到包含给定对象的新页面的按钮。 我已经尝试过 "TapGestureRecognizer".
<ListView x:Name="ListView" HasUnevenRows="True" SelectionMode="Single" >
<ListView.ItemsSource>
<x:Array Type="{x:Type clients:MinRepresentation}">
<clients:MinRepresentation Id="123456789" PlannedStartTime="01-01-2019" PlannedEndTime="01-12-2019" />
<clients:MinRepresentation Id="555555555" PlannedStartTime="12-12-2019" PlannedEndTime="12-12-2019" />
</x:Array>
</ListView.ItemsSource>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid Padding="5">
<Grid.GestureRecognizers>
<TapGestureRecognizer Command="{Binding OrderDetailsCommand}"/>
</Grid.GestureRecognizers>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
[Cell-Template]
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
找到了简单的解决方案...
XAML:
<ListView HasUnevenRows="True" SelectionMode="Single" ItemsSource="{Binding VisibleOrders}" ItemSelected="OnListViewItemSelected" ItemTapped="OnListViewItemTapped"/>
视图模型:
public IList<MinRepresentation> VisibleOrders { get; private set; }
void OnListViewItemSelected(object sender, SelectedItemChangedEventArgs e)
{
MinRepresentation selectedItem = e.SelectedItem as MinRepresentation;
}
void OnListViewItemTapped(object sender, ItemTappedEventArgs e)
{
MinRepresentation tappedItem = e.Item as MinRepresentation;
}