gpt4 book ai didi

c# - 绑定(bind)到 MvvmCross for MonoDroid/Android 中的 Path ImageView

转载 作者:行者123 更新时间:2023-11-30 15:02:11 24 4
gpt4 key购买 nike

在我的例子中路径 "MyZooSnap.Core;component/Resources/Images/i.jpg"。如何为 Android ImageView 转换路径?为了在以下绑定(bind)中使用它:

{'AssetImagePath':{'Path':'ImagePath'}}

More here

similar questions

谢谢

最佳答案

快速回答:

  • 如果您的 Android 图片文件存储在 assets/images/i1.png
  • 然后确保它被标记为 AndroidAsset
  • 那么你的路径需要是images/i1.png

更长的答案:

理想情况下,您的 ViewModel 应该独立于平台并且不知道 View 问题。

因此您的 ViewModel 可能会暴露如下属性:

 private GameState _state;
public GameState State
{
get { return _state; }
set { _state = value; RaisePropertyChanged(() => State); }
}

其中 GameState 是一个枚举,例如:

 public enum GameState
{
Stopped,
Running,
Paused,
GameOver
}

然后您可能会在 Assets 结构中拥有表示这些状态的图像,例如:

/assets/gamestates/stopped.png
/assets/gamestates/running.png
/assets/gamestates/paused.png
/assets/gamestates/gameover.png

其中每个文件都标有 AndroidAsset 的 BuildAction。

然后要在 UI 中显示正确的图像,您需要一个值转换器,例如:

public class GameStateConverter
: MvxBaseValueConverter
{
public override object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return string.Format("gamestates/{0}.png", ((GameState)value).ToString().ToLower());
}
}

使用 Converters 包装器进行映射,例如:

public class Converters
{
public readonly GameStateConverter GameState = new GameStateConverter();
}

在 setup.cs 中配置使用:

    protected override IEnumerable<Type> ValueConverterHolders
{
get { return new[] { typeof(Converters) }; }
}

有了这个,那么您的 axml 绑定(bind)语句将是:

    {'AssetImagePath':{'Path':'State', 'Converter':'GameState'}}

有关使用资源而不是 Assets 的替代方法,请参阅 Іssue with binding to GridLayout to Android 中的 MvxButtonIconBinding

关于c# - 绑定(bind)到 MvvmCross for MonoDroid/Android 中的 Path ImageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12925056/

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