我想创建一个viewcell,其中stacklayout包含每行边框。此框架包含标签和一个按钮。在此按钮上单击我必须更改屏幕。
当我在iOS模拟器上渲染该代码并发现在选择任何行(即视单元格)时,我发现了一个问题,它会变灰并显示模糊的选定行,看起来很难看。我试图禁用解决我的行选择问题的视图单元格,但它也禁用按钮点击行,因为它是它的一部分。
我只需要启用一个按钮并且可以单击,而视单元上的部件的其余部分不应该是可点击的或可供选择。我必须使用框架作为边框目的。这也提供圆形边框,但建议我一些解决方案,我可以用它来代替边框框架。
<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>
答案 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时显示触摸响应