2
私はImageCellのリストをバインドするためにListViewでデータバインディングを使用しています。イメージは、アプリケーションデータとしてデバイスにローカルに保存されたファイルです。Xamarin.FormsローカルファイルへのImageCellバインド
Windowsでは、ファイルへの絶対パスまたは相対パスを使用できません。ファイル:// URIに変換する必要があります。残念ながら、Androidでは、file:// URIは機能せず、パスである必要があります。
現在、ターゲットプラットフォームに応じてビューモデルで異なる値を使用して問題を回避しています。これよりもよりよい解決策はあります:
if (Device.OS == TargetPlatform.Windows) {
result.uri = new Uri(uri).AbsoluteUri;
}
XAML:
<ListView.ItemTemplate>
<DataTemplate>
<ImageCell ImageSource="{Binding Uri}"
Text="{Binding Name}">
</ImageCell>
</DataTemplate>
</ListView.ItemTemplate>
Uri
のタイプがあり、文字列、私が代わりにUriImageSource
を使用する必要がありますか?
うわー、これは本当に複雑です。プラットフォームがWindowsであるかどうかに応じて、ビューモデルのfile:// URIに変換するほうが簡単でしょうか?すなわち、https://github.com/Azure-Samples/app-service-mobile-dotnet-todo-list-files/blob/master/src/client/MobileAppsFilesSample/ViewModels/TodoItemImageViewModel.cs#L31。 –
Windowsのような単純な解決策が見つからないので、上記の解決策で解決しました。簡単な方法を見つけたら、投稿してください。 – user3509981
私の現在のソリューションで私の質問を更新しました。ちょうど2行のコードです。 –