【发布时间】:2020-08-11 18:43:35
【问题描述】:
我有一个 CollectionView 和我的自定义按钮。我想用按钮制作一个网格。当我单击按钮时,它会更改背景颜色。我想在 void OnCollectionViewSelectionChanged(object sender, SelectionChangedEventArgs e) 中写一些东西,并且标签的文本是 SELECTED 按钮的名称(类字段) .当我点击collectionview中的按钮时,它会改变颜色但按钮不可点击,它看不到它,如果我写图像它可以读取数据。请帮我使按钮可点击
<StackLayout>
<Label x:Name="meow1"></Label>
<CollectionView ItemsSource="{Binding Cars}" x:Name="phonesList"
HeightRequest="90"
ItemsLayout="HorizontalList"
BackgroundColor="Transparent"
SelectionMode="Single"
SelectionChanged="OnCollectionViewSelectionChanged">
<CollectionView.ItemTemplate>
<DataTemplate>
<Frame x:Name="frame" CornerRadius="10" BackgroundColor="Black" Padding="0" HeightRequest="90"
WidthRequest="95">
<Grid Padding="0" x:Name="meow">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<controls:CustomButton TintColor="#725762" HeightRequest="90"
WidthRequest="90" CornerRadius="10" HorizontalOptions="Center"
BackgroundColor="White" ImageSource="{Binding ImagePath}" Clicked="Button_OnClicked"/>
</Grid>
</Frame>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</StackLayout>
void OnCollectionViewSelectionChanged(object sender, SelectionChangedEventArgs e)
{
meow1.Text = (e.CurrentSelection.FirstOrDefault() as Car).NameImage;
}
【问题讨论】:
-
您不能按名称引用模板中的元素。您需要修改元素绑定到的基础模型对象。如果您希望在单击按钮时发生操作,则需要使用 Clicked 处理程序,而不是 SelectionChanged。 SelectionChanged 将触发 Cell 中的任何点击事件,而不仅仅是按钮点击。
-
Button_OnClicked 的代码在哪里?单击按钮时会触发吗?
-
您的问题是“按钮不可点击”,但在您的评论中它说“它有效”。我不明白您要解决的实际问题是什么。
-
@MariaKamenskyh 嗨,欢迎来到 SO!您能否分享一张图片来解释问题,这将清楚地了解您的需求。
标签: c# xamarin button xamarin.android collectionview