在我的 xamarin.forms 应用程序中,我尝试将图像放在视图上。在 Android 模拟器、iOS iPad 设备和 WinPhone 模拟器上,一切都很好并且可见。但图像没有显示在“本地”Win10 机器上,也没有显示在模拟器/模拟器上。这是我使用的代码:
视图模型:
using Prism.Mvvm;
namespace DemoJan017.ViewModels.ViewModels
{
public class _StartPageViewModel : BindableBase
{
private string _TegelPad;
public string TegelPad
{
get { return _TegelPad; }
set { SetProperty(ref _TegelPad, value); }
}
private string _TegelTekst;
public string TegelTekst
{
get { return _TegelTekst; }
set { SetProperty(ref _TegelTekst, value); }
}
public _StartPageViewModel()
{
TegelPad = "Afbeeldingen/Tegels/aanvraag.png";
TegelTekst = "the first image is visible!";
}
}
}
看法:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
prism:ViewModelLocator.AutowireViewModel="True"
xmlns:local="clr-namespace:DemoJan017.Views;assembly=DemoJan017"
xmlns:conv ="clr-namespace:DemoJan017.Common;assembly=DemoJan-17"
x:Class="DemoJan017.Views._StartPage">
<ContentPage.Resources>
<ResourceDictionary>
<conv:LocaleAfbeeldingPadConverter
x:Key="LocaleAfbeeldingPadConverter"/>
</ResourceDictionary>
</ContentPage.Resources>
<StackLayout VerticalOptions="Center" HorizontalOptions="Center">
<Image Source="{Binding TegelPad, Converter={StaticResource LocaleAfbeeldingPadConverter}}" />
<Label Text="{Binding TegelTekst}" />
</StackLayout>
</ContentPage>
转换器是这样的:
using System;
using System.Globalization;
using Xamarin.Forms;
namespace DemoJan017.Common
{
class LocaleAfbeeldingPadConverter:IValueConverter
{
private static string _assembly;
static LocaleAfbeeldingPadConverter()
{
_assembly = typeof(LocaleAfbeeldingPadConverter).AssemblyQualifiedName.Split(',')[1].Trim() + '.';
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string source = _assembly + ((string)value).Replace('/', '.');
return ImageSource.FromResource(source);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
我想我有所有的引用和属性,否则我认为模拟器(对于 WIN)不会做出正确的反应,或者他们会吗?
这种行为的可能原因是什么?
问候