【发布时间】:2021-08-13 09:29:06
【问题描述】:
我在 UI 上列出了一些项目。如果我点击一个项目,它将展开并显示其详细信息。我最初在 UI 上设置了所有内容,包括详细信息并隐藏了详细信息部分。当我点击该项目时,我会更改详细信息的可见性并将其显示在 UI 上。此功能在 android 上运行良好并在 ios 上运行良好。我已经上传了一个示例项目here 供参考。
截图:
Xaml.cs
private void ItemTapped(object sender, ItemTappedEventArgs e)
{
var selectedItem = (Contact)e.Item;
if (selectedItem != null)
{
if (phoneId == selectedItem.phoneOne)
{
Hide(selectedItem);
phoneId = "";
}
else
{
Open(selectedItem);
}
}
addressbook_listview.SelectedItem = null;
}
private void Open(Contact selectedItem)
{
foreach (var item in contactsList)
{
item.PhoneVisibility = false;
}
selectedItem.PhoneVisibility = true;
phoneId = selectedItem.phoneOne;
}
private void Hide(Contact selectedItem)
{
selectedItem.PhoneVisibility = false;
}
Xaml
<ListView
x:Name="addressbook_listview"
Grid.Row="1"
BackgroundColor="Black"
ItemTapped="addressbook_listview_ItemTapped"
SelectionMode="None"
HasUnevenRows="True">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout
Padding="10"
Orientation="Vertical">
<StackLayout
Grid.Column="1"
VerticalOptions="CenterAndExpand"
Margin="5,0,0,0">
<Label
Text="{Binding contactName}"
TextColor="White">
<Label.FontSize>
<OnIdiom x:TypeArguments="x:Double">
<OnIdiom.Phone>15</OnIdiom.Phone>
<OnIdiom.Tablet>20</OnIdiom.Tablet>
<OnIdiom.Desktop>15</OnIdiom.Desktop>
</OnIdiom>
</Label.FontSize>
</Label>
<Label
Text="{Binding phoneOne}"
TextColor="White">
<Label.FontSize>
<OnIdiom x:TypeArguments="x:Double">
<OnIdiom.Phone>15</OnIdiom.Phone>
<OnIdiom.Tablet>20</OnIdiom.Tablet>
<OnIdiom.Desktop>15</OnIdiom.Desktop>
</OnIdiom>
</Label.FontSize>
</Label>
</StackLayout>
<StackLayout
HorizontalOptions="CenterAndExpand"
Margin="0,10,0,0"
IsVisible="{Binding PhoneVisibility}"
Orientation="Vertical">
<StackLayout
Orientation="Horizontal">
<Label
Text="Phone 1"
TextColor="White">
<Label.FontSize>
<OnIdiom x:TypeArguments="x:Double">
<OnIdiom.Phone>15</OnIdiom.Phone>
<OnIdiom.Tablet>20</OnIdiom.Tablet>
<OnIdiom.Desktop>15</OnIdiom.Desktop>
</OnIdiom>
</Label.FontSize>
</Label>
<Label
Text="{Binding phoneOne}"
TextColor="White">
<Label.FontSize>
<OnIdiom x:TypeArguments="x:Double">
<OnIdiom.Phone>15</OnIdiom.Phone>
<OnIdiom.Tablet>20</OnIdiom.Tablet>
<OnIdiom.Desktop>15</OnIdiom.Desktop>
</OnIdiom>
</Label.FontSize>
</Label>
</StackLayout>
<BoxView HeightRequest="0.5"
HorizontalOptions="FillAndExpand"/>
<StackLayout
Orientation="Horizontal">
<Label
Text="Phone 2"
TextColor="White">
<Label.FontSize>
<OnIdiom x:TypeArguments="x:Double">
<OnIdiom.Phone>15</OnIdiom.Phone>
<OnIdiom.Tablet>20</OnIdiom.Tablet>
<OnIdiom.Desktop>15</OnIdiom.Desktop>
</OnIdiom>
</Label.FontSize>
</Label>
<Label
Text="{Binding phoneTwo}"
TextColor="White">
<Label.FontSize>
<OnIdiom x:TypeArguments="x:Double">
<OnIdiom.Phone>15</OnIdiom.Phone>
<OnIdiom.Tablet>20</OnIdiom.Tablet>
<OnIdiom.Desktop>15</OnIdiom.Desktop>
</OnIdiom>
</Label.FontSize>
</Label>
</StackLayout>
</StackLayout>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.Footer>
<Label/>
</ListView.Footer>
</ListView>
【问题讨论】:
-
从这个帖子中得到了完美的解决方案。 docs.microsoft.com/en-us/answers/questions/512700/…