如何在Xamarin表单macOS的条目(用于聊天)中添加自定义图像?

迪丹多

我正在尝试创建一个支持同时添加文本和图像(自定义图像)的条目。现在,我正在尝试在macOS中实现这一目标。

到目前为止,我要做的是创建一个自定义控件,其中有一个图像列表,如果将新图像添加到条目中,则将其添加到其中。添加后,其想法是使其位于最后一个文本(或图像)的右侧。

控制:

public class ChatEntry : Entry
{
    public ChatEntry()
    {
        this.HeightRequest = 50;
    }

    public static readonly BindableProperty ImageProperty =
        BindableProperty.Create(nameof(Images), typeof(List<string>), typeof(ChatEntry), string.Empty);

    public static readonly BindableProperty LineColorProperty =
        BindableProperty.Create(nameof(LineColor), typeof(Xamarin.Forms.Color), typeof(ChatEntry), Color.White);

    public static readonly BindableProperty ImageHeightProperty =
        BindableProperty.Create(nameof(ImageHeight), typeof(int), typeof(ChatEntry), 40);

    public static readonly BindableProperty ImageWidthProperty =
        BindableProperty.Create(nameof(ImageWidth), typeof(int), typeof(ChatEntry), 40);

    public Color LineColor
    {
        get { return (Color)GetValue(LineColorProperty); }
        set { SetValue(LineColorProperty, value); }
    }

    public int ImageWidth
    {
        get { return (int)GetValue(ImageWidthProperty); }
        set { SetValue(ImageWidthProperty, value); }
    }

    public int ImageHeight
    {
        get { return (int)GetValue(ImageHeightProperty); }
        set { SetValue(ImageHeightProperty, value); }
    }

    public List<string> Images
    {
        get { return (List<string>)GetValue(ImageProperty); }
        set { SetValue(ImageProperty, value); }
    }
}

MacOS渲染器:

[assembly: ExportRenderer(typeof(ChatEntry), typeof(ChatEntryRenderer))]
namespace Project.MacOS.Renderers
{
public class ChatEntryRenderer : EntryRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
    {
        base.OnElementChanged(e);

        if (e.OldElement != null || e.NewElement == null)
            return;

        var element = (ChatEntry)this.Element;
        var textField = this.Control;
        if (element.Images != null)
        {
            // TODO : Logic GetImageView
        }

        CALayer bottomBorder = new CALayer
        {
            Frame = new CGRect(0.0f, element.HeightRequest - 1, this.Frame.Width, 1.0f),
            BorderWidth = 2.0f,
            BorderColor = element.LineColor.ToCGColor()
        };

        textField.Layer.AddSublayer(bottomBorder);
        textField.Layer.MasksToBounds = true;
    }

    private NSView GetImageView(string imagePath, int height, int width)
    {
        var uiImageView = new NSImageView()
        {
            Frame = new RectangleF(0, 0, width, height)
        };

        uiImageView.Image = NSImage.ImageNamed(imagePath);

        NSView objLeftView = new NSView(new System.Drawing.Rectangle(0, 0, width + 10, height));
        objLeftView.AddSubview(uiImageView);

        return objLeftView;
    }
}
}

我现在面临的问题是将这一切捆绑在一起。我创建了一个GetImageView可以返回NSView的位置,但是我不确定如何将其合并到前一个字符(或图像)的右侧,我不确定,需要一些指导。

妮可露-MSFT

在介绍所有内容之前,我想说Xamarin for MacOS仍在预览中,对于Entry,仍有一些功能有待开发,并可能影响您的应用程序,如果您要发布应用程序,则应仔细考虑并测试。您可以在此处找到输入状态

如果我正确理解了您的问题,则您正在尝试创建一个自定义条目,该条目可以将文本和图像放入其中,如下所示:

文字[IMG1] abc [IMG2] ...

这可能会给您带来一些想法:如何实现以图片为中心的标签

它利用NSTextAttachment来保存图像,并利用NSMutableAttributedString] 4来保存条目中的整个字符串。区别在于,它仅包含一个图像,但条目中将包含多个图像,因此您可能需要一个字典来将字符串中的占位符与实际图像进行映射。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

如何在Xamarin表单macOS的条目(用于聊天)中添加自定义图像?

来自分类Dev

如何在Xamarin表单中自定义标题模板

来自分类Dev

如何在管理表单中添加自定义功能?

来自分类Dev

如何在管理表单中添加自定义功能?

来自分类Dev

如何在表单中动态添加自定义控件

来自分类Dev

如何在 Drupal 中添加自定义 HTML 表单

来自分类Dev

如何在自定义形状xml中添加图像

来自分类Dev

如何在MGWT ImageButton中添加自定义图像

来自分类Dev

如何在自定义形状xml中添加图像

来自分类Dev

如何在Xamarin表单中创建自定义可绑定视图?

来自分类Dev

如何在joomla模块xml中的表单字段中添加自定义标记

来自分类Dev

如何在适用于Android的Xamarin .axml中应用自定义视图

来自分类Dev

如何在Yii2表单字段中为标签添加自定义类?

来自分类Dev

如何在Django Admin中向更改模型表单添加自定义操作?

来自分类Dev

Django:如何在表单保存中向数据添加自定义字段?

来自分类Dev

Joomla,如何在Virtuemart类别表单中添加自定义字段?

来自分类Dev

如何在Django管理表单中添加自定义标签和内容

来自分类Dev

如何在Drupal 7中为自定义内容类型添加主题/编辑表单

来自分类Dev

如何在magento 2的产品编辑表单的“可自定义选项”中添加新字段?

来自分类Dev

如何在iOS中的自定义tableviewcell中的图像上添加文本标签

来自分类Dev

如何在balsamiq样机中添加自定义图像/图标?

来自分类Dev

如何在Django中的每个图像上添加自定义底部

来自分类Dev

如何在balsamiq样机中添加自定义图像/图标?

来自分类Dev

如何在Highchart的打印图像中添加自定义消息?

来自分类Dev

如何在Moodle中创建自定义表单?

来自分类Dev

如何在Django中命名自定义表单的字段?

来自分类Dev

如何在Joomla中创建自定义联系表单?

来自分类Dev

如何在 Xamarin 中自定义 ContentPage 标题?

来自分类Dev

在Xamarin中添加自定义字体

Related 相关文章

  1. 1

    如何在Xamarin表单macOS的条目(用于聊天)中添加自定义图像?

  2. 2

    如何在Xamarin表单中自定义标题模板

  3. 3

    如何在管理表单中添加自定义功能?

  4. 4

    如何在管理表单中添加自定义功能?

  5. 5

    如何在表单中动态添加自定义控件

  6. 6

    如何在 Drupal 中添加自定义 HTML 表单

  7. 7

    如何在自定义形状xml中添加图像

  8. 8

    如何在MGWT ImageButton中添加自定义图像

  9. 9

    如何在自定义形状xml中添加图像

  10. 10

    如何在Xamarin表单中创建自定义可绑定视图?

  11. 11

    如何在joomla模块xml中的表单字段中添加自定义标记

  12. 12

    如何在适用于Android的Xamarin .axml中应用自定义视图

  13. 13

    如何在Yii2表单字段中为标签添加自定义类?

  14. 14

    如何在Django Admin中向更改模型表单添加自定义操作?

  15. 15

    Django:如何在表单保存中向数据添加自定义字段?

  16. 16

    Joomla,如何在Virtuemart类别表单中添加自定义字段?

  17. 17

    如何在Django管理表单中添加自定义标签和内容

  18. 18

    如何在Drupal 7中为自定义内容类型添加主题/编辑表单

  19. 19

    如何在magento 2的产品编辑表单的“可自定义选项”中添加新字段?

  20. 20

    如何在iOS中的自定义tableviewcell中的图像上添加文本标签

  21. 21

    如何在balsamiq样机中添加自定义图像/图标?

  22. 22

    如何在Django中的每个图像上添加自定义底部

  23. 23

    如何在balsamiq样机中添加自定义图像/图标?

  24. 24

    如何在Highchart的打印图像中添加自定义消息?

  25. 25

    如何在Moodle中创建自定义表单?

  26. 26

    如何在Django中命名自定义表单的字段?

  27. 27

    如何在Joomla中创建自定义联系表单?

  28. 28

    如何在 Xamarin 中自定义 ContentPage 标题?

  29. 29

    在Xamarin中添加自定义字体

热门标签

归档