私の 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 用) が正しく反応しないと思いますか?
この動作の考えられる原因は何ですか?
よろしく