列表视图中的自定义查看单元格,只有按钮可点击

时间:2016-06-11 06:31:53

标签: listview xamarin.forms

我想创建一个viewcell,其中stacklayout包含每行边框。此框架包含标签和一个按钮。在此按钮上单击我必须更改屏幕。

当我在iOS模拟器上渲染该代码并发现在选择任何行(即视单元格)时,我发现了一个问题,它会变灰并显示模糊的选定行,看起来很难看。我试图禁用解决我的行选择问题的视图单元格,但它也禁用按钮点击行,因为它是它的一部分。

我只需要启用一个按钮并且可以单击,而视单元上的部件的其余部分不应该是可点击的或可供选择。我必须使用框架作为边框目的。这也提供圆形边框,但建议我一些解决方案,我可以用它来代替边框框架。

截图: enter image description here

<ListView x:Name="lstView" RowHeight="150" SeparatorVisibility="None" IsPullToRefreshEnabled="False" >
    <ListView.ItemTemplate>
      <DataTemplate>
        <ViewCell>
          <StackLayout Padding="10,10,10,10">
          <Frame OutlineColor="Silver">
            <Grid>
              <Grid.RowDefinitions>
                <RowDefinition Height="*" />
                <RowDefinition Height="*" />
                <RowDefinition Height="*" />
              </Grid.RowDefinitions>
              <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="100" />
              </Grid.ColumnDefinitions>
              <Label Text="Car Type" Grid.Row="0" Grid.Column="0" FontAttributes="Bold"/>
              <Label Text="{Binding CreatedDate}" Grid.Row="1" Grid.Column="0"/>
              <Label Text="{Binding TransactionId}" Grid.Row="2" Grid.Column="0"/>
              <StackLayout Grid.Row="0" Grid.Column="1" Orientation="Horizontal">
                <Label Text="Status" FontAttributes="Bold"/>
                <Label Text="{Binding Status}" FontAttributes="Bold"/>
              </StackLayout>
              <StackLayout Grid.Row="1" Grid.Column="1" Orientation="Horizontal">
                <Label Text="Customer Name" />
                <Label Text="{Binding CustName}" />
              </StackLayout>
              <Button Text="Button" Grid.Row="1" Grid.Column="2" Clicked="OnClicked" CommandParameter="{Binding DisplayName}"></Button>
            </Grid>
          </Frame>
          </StackLayout>
        </ViewCell>
      </DataTemplate>
    </ListView.ItemTemplate>
  </ListView>

3 个答案:

答案 0 :(得分:0)

禁用选择 如果要禁用选择,请处理ItemSelected事件并将SelectedItem属性设置为null:

SelectionDemoList.ItemSelected += (sender, e) => {
((ListView)sender).SelectedItem = null;

};

来源: https://developer.xamarin.com/guides/xamarin-forms/user-interface/listview/interactivity/

答案 1 :(得分:0)

同样的效果在Ios方面发生在xamarin形式,这是由于框架。 注释框架标签axml代码你的代码将正常listview这个效果将消失

答案 2 :(得分:0)

最简单的方法,如果您只想坚持使用xamarin表单,则ViewCell BackgroundColor或ViewCell.View中的布局为白色。

所以在这种情况下:

<DataTemplate>
        <ViewCell>
          <StackLayout Padding="10,10,10,10" BackgroundColor="White">

但由于填充,可能会有一些空白透明,在点击ViewCell时显示触摸响应