У меня есть проект Xaramin.Forms, в котором интерфейс включает представление коллекции. Однако при запуске проекта iOS изображения не отображаются на iPhone. Для Android отображаются изображения.
После некоторых онлайн-исследований я понял, что мне нужно включить изображение в файл активов проекта iOS. Я пробовал много примеров, связанных со структурой данных ImageSource. Это не сработало так, как я хотел.
Итак, мой вопрос: как мне правильно настроить все, чтобы я мог привязать путь расположения изображения к представлению коллекции?
Вот фрагмент моего исходного кода Xaml:
<DataTemplate>
<StackLayout Orientation="Vertical">
<Label Text="{Binding Path=StatusTitle}" FontSize="Large" HorizontalTextAlignment="Center" FontAttributes="Bold"></Label>
<Image Source="{Binding Path=StatusImage}" Scale="0.65"></Image>
<StackLayout Orientation="Horizontal" HorizontalOptions="CenterAndExpand" IsEnabled="True">
<Entry Text="{Binding Path=StatusValue}" VerticalOptions="Center" WidthRequest="60" FlowDirection="MatchParent" HorizontalTextAlignment="End" FontSize="Large"></Entry>
<Label Text="{Binding Path=StatusUnit}" FontSize="Large" VerticalOptions="Center"></Label>
</StackLayout>
</StackLayout>
</DataTemplate>
Ниже приведен фрагмент кода, который заполняет представление коллекции (Примечание. Там есть некоторый отладочный код, который я оставлю только для справки:
bodyTemp = new DataObject { StatusTitle = "Temp", StatusImage = "weatherTest", StatusUnit = "F", StatusValue = "0" };
/* pressureData = new DataObject { StatusTitle = "Pressure", StatusUnit = "kPa", StatusImage = "barometer.png", StatusValue = "0" };
humditiyData = new DataObject { StatusTitle = "Humidity", StatusUnit = "%RH", StatusImage = "humidity.png", StatusValue = "0" };
lightData = new DataObject { StatusTitle = "UVC Light", StatusUnit = "%", StatusImage = "lightbulb.png", StatusValue = "0" };
fanSpeedData = new DataObject { StatusTitle = "Fan Speed", StatusUnit = "%", StatusImage = "fan.png", StatusValue = "0" };
batteryData = new DataObject { StatusTitle = "Battery", StatusUnit = "%", StatusImage = "battery.png", StatusValue = "0" };
heartRateData = new DataObject { StatusTitle = "Heart Rate", StatusUnit = "BPM", StatusImage = "heart.png", StatusValue = "0" };
bosData = new DataObject { StatusTitle = "BOS Rate", StatusUnit = "%", StatusImage = "oxygen.png", StatusValue = "0" };
wifiData = new DataObject { StatusTitle = "Wifi", StatusUnit = "", StatusImage = "wifi.png", StatusValue = "Good" };
bluetoothData = new DataObject { StatusTitle = "Bluetooth", StatusUnit = "", StatusImage = "bluetooth.png", StatusValue = "Good" }; */
List<DataObject> dataArray = new List<DataObject>(10);
dataArray.Add(bodyTemp);
/* dataArray.Add(pressureData);
dataArray.Add(humditiyData);
dataArray.Add(lightData);
dataArray.Add(fanSpeedData);
dataArray.Add(batteryData);
dataArray.Add(heartRateData);
dataArray.Add(bosData);
dataArray.Add(wifiData);
dataArray.Add(bluetoothData); */
BindingContext = dataArray;
А вот определение класса моего объекта данных:
class DataObject : INotifyPropertyChanged
{
private string p_Value = "0";
public string StatusTitle
{
get;
set;
}
public string StatusImage
{
get;
set;
}
public string StatusUnit
{
get;
set;
}
public string StatusValue
{
get { return p_Value; }
set
{
if(value != p_Value)
{
p_Value = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("StatusValue"));
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
}