gpt4 book ai didi

c# - Xamarin Forms 图像未显示在 ListView 中

转载 作者:太空宇宙 更新时间:2023-11-03 22:46:35 24 4
gpt4 key购买 nike

我想在我的 ListView 中显示一个 /!\ 图标。不幸的是,它没有出现在任何地方。

我 100% 肯定它在 iOS 和 Android 应用程序中的正确位置。我已经仔细检查过它是一个 Android 资源(如下面的截图所示) enter image description here

用于初始化图像的代码:alarmIcon = new Image { Source = "warning.png"};

初始化后,我将其作为图像属性放入 AlarmPageItem 对象中。这被添加到 ListView 中。我已检查我是否将绑定(bind)与 AlarmPageItem 属性相匹配。 (确实会显示文本)。

我不知道为什么它不起作用......

我尝试过的事情

  1. 图片和来源声明检查情况
  2. 检查构建操作并复制到输出目录
  3. 检查绑定(bind)匹配
  4. 尝试构建到手机而不是 xamarin live player
  5. 检查图像位置

代码:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="OSIApp.Pages.AlarmPage"
Title="Alarm Log">
<ContentPage.Content>
<StackLayout>
<ListView x:Name="listView"
ItemTapped="OnItemTapped" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Horizontal">
<StackLayout>
<Label x:Name="alarmTimeLabel"
HorizontalOptions="Center"
HorizontalTextAlignment="Center"
Text="{Binding DateTime}"/>
<Image x:Name="alarmIconImage"
Source="{Binding AlarmImage}"/>
</StackLayout>
<Label x:Name="alarmTextLabel"
FontSize="14"
VerticalOptions="FillAndExpand"
VerticalTextAlignment="Center"
HorizontalOptions="FillAndExpand"
FontFamily="Avenir Next"
FontAttributes="Bold"
Text="{Binding AlarmText}"/>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage.Content>

    public partial class AlarmPage : ContentPage
{
private List<AlarmPageItem> listViewItems;

private Image alarmIcon;

public AlarmPage ()
{
listViewItems = new List<AlarmPageItem>();
alarmIcon = new Image { Source = "warning.png" };
PopulateList();

InitializeComponent();

listView.ItemsSource = listViewItems;
}

private void OnItemTapped(object sender, ItemTappedEventArgs e)
{
if (e == null) return; // has been set to null, do not 'process' tapped event
Debug.WriteLine("Tapped: " + e.Item);
((ListView)sender).SelectedItem = null; // de-select the row
}

private void PopulateList()
{


listViewItems.Add(new AlarmPageItem() {AlarmImage = alarmIcon, AlarmText = "The front is too heavy", DateTime = DateTime.Now.ToShortTimeString()});
}
}

最佳答案

您在 XAML 中将您在代码后面创建的 Image 对象绑定(bind)为 Image 的“源”。

通过使 AlarmImage 属性成为 ImageSource 或只是一个简单的 string 来更新您的 AlarmPageItem 类。

类似于:

class AlarmPageItem
{
public string AlarmImage { get; set; }

public string AlarmText { get; set; }

//Just a suggestion: Change this property name for something different as it
//can create some confusion.
public DateTime DateTime { get; set; }

...

// Add any other properties your class might have.
}

一旦更新了上面的内容,只需更改您的代码以在 PopulateList 方法中设置图像的名称

private void PopulateList()
{
listViewItems.Add(new AlarmPageItem() {AlarmImage = "warning.png", AlarmText = "The front is too heavy", DateTime = DateTime.Now.ToShortTimeString()});
}

希望这有帮助。-

关于c# - Xamarin Forms 图像未显示在 ListView 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49565622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com