标签: xamarin-forms

ListView SelectedItem与Xamarin Forms和ReactiveUI问题绑定

我有一个显示名称的项目的基本列表.我需要在单击其中一个列表项时导航到新屏幕.超级简单吧?我无法弄清楚这出错的地方.

该列表正确显示其项目.选择项目后,列表视图会突出显示相应的项目,但不会出现任何其他项目.我没有错.就好像视图和视图模型没有正确连接,或者视图模型中的订阅可能没有正确设置.我是ReactiveUI的新手.

下面是我的代码的虚拟示例.

ItemListViewModel.cs

public IReactiveDerivedList<ItemTileViewModel> ItemTiles { get; protected set; }
public ItemTileViewModel SelectedItemTile { get; set; }

private void Initialize(){
     ItemTiles = LoadedItems.CreateDerivedCollection(item => new ItemTileViewModel(item));
     this.WhenAnyValue(x => x.SelectedItemTile)
            .Where(tile => tile != null)
            .Select(tile => tile.Model)
            .Subscribe(item =>
            {
                HostScreen.Router.Navigate.ExecuteAsync(new ItemViewModel(item));
                SelectedItemTile = null;
            });

     // We load the items
}
Run Code Online (Sandbox Code Playgroud)

我不确定是否适合使用派生列表.我希望我没有给出足够的反馈意见.

ItemListView.xaml.cs - 构造函数

this.OneWayBind(ViewModel, vm => vm.ItemTiles, v => v.ItemTiles.ItemsSource);
this.Bind(ViewModel, vm => vm.SelectedItemTile, v => v.ItemTiles.SelectedItem);
Run Code Online (Sandbox Code Playgroud)

ItemListView.xaml

<ListView x:Name="ItemTiles">
    <ListView.ItemTemplate>
      <DataTemplate>
        <ViewCell>
          <views:ItemTileView ViewModel="{Binding}" …
Run Code Online (Sandbox Code Playgroud)

xaml listview mvvm reactiveui xamarin-forms

5
推荐指数
1
解决办法
2688
查看次数

使用Xamarin Forms更新到AppCompat后WebView中的白色覆盖

在我的Xamarin Forms应用程序中,我WebView通过插入一个contentEditable设置为true 的div用作表单。在更新AppCompat样式之前,一切工作正常。

现在,当用户尝试在中书写时,会出现一个奇怪的白色叠加层(白色方块)WebView,而在关闭键盘时该叠加层会消失。为了找到问题的根本原因,我创建了一个示例项目,该项目的一个页面仅包含一个垂直堆栈布局,该页面包含另一个堆栈布局和webview。我注意到的是,如果内部堆栈布局的高度足以使Webview在出现时被键盘覆盖,则会发生此问题。在这种情况下,将Web视图向上推,然后出现此奇怪的叠加层。Web视图具有全部功能,并且即使该白色正方形将其隐藏,也可以编写文本,而在关闭键盘后该文本将消失。

这是一个可用于测试问题的简单页面的示例。添加按钮只是为了增加和减小布局的大小,以更轻松地显示问题

public class MainPage : ContentPage
{
    const string ContentEdit = @"<div contentEditable=""true"" style =""min-height: 200px"">";
    const string ContentEditEnd = "</div>";
    const string EmptyDocument = @"<body>" + ContentEdit + ContentEditEnd + @"</body>";

    WebView webView;

    public MainPage()
    {
        InitializePage();
    }

    void InitializePage()
    {
        webView = new WebView()
        {
            VerticalOptions = LayoutOptions.FillAndExpand,
            HorizontalOptions = LayoutOptions.FillAndExpand,
        };

        var button1 = new Button
        {
            HorizontalOptions = LayoutOptions.CenterAndExpand,
            VerticalOptions = LayoutOptions.CenterAndExpand, …
Run Code Online (Sandbox Code Playgroud)

android webview xamarin xamarin-forms

5
推荐指数
1
解决办法
646
查看次数

Xamarin表单:如何在PCL项目中使用嵌入式资源进行图像处理

我的资源目录中有4个图像到我的便携式项目中,我想直接将它们用于ImageSource(因为我需要绑定它).

ImageSource myImageSource = ImageSource.FromResource("resources.image.png");
Run Code Online (Sandbox Code Playgroud)

我试过这个,但它不认识路径.如何将我的图像用于ImageSource?

image mvvm imagesource xamarin xamarin-forms

5
推荐指数
1
解决办法
2472
查看次数

Xamarin.Forms - 是否存在"包含"局部视图的机制?

Xamarin.Forms有一个包含概念吗?

我正在创建一个跨所有页面都有共享标头的应用.有没有办法创建一次标题并将其包含在所有页面上?更好的是,有没有办法创建模板或可重复使用的布局,您可以将所有内容放在每个页面内?这将是与.NET MVC _Layout文件类似的概念.

user-controls templating xamarin xamarin-forms

5
推荐指数
2
解决办法
4530
查看次数

我们可以从手机(Android/iOS)中选择一个图像并使用公共代码(Xamarin Forms)将其上传到服务器吗?

要实现这个目标,我应该选择特定于平台的代码,还是可以从共享的Xamarin.Forms项目中的常用代码中实现.

基本上我需要打开Gallery并选择一个图像,然后将其上传到多部分字节数组中的服务器.

找不到使用Xamarin Forms的任何示例.

c# ios xamarin xamarin.forms xamarin-forms

4
推荐指数
1
解决办法
8720
查看次数

Xamarin表单:如果未找到Url,则为默认图像

在xamarin表单中,我们可以创建如下图像:

Image i = new Image { Source = "http://www.foo.com/foo.jpg };
Run Code Online (Sandbox Code Playgroud)

将此添加到布局后如果url返回图像,它将显示它.我现在想要的是有一种方法可以知道Url是否是一个真实的图像.否则我将显示默认图像.

问候.

编辑

我创建了一个函数:

public string GetImageSourceOrDefault(string orgUrl)
        {
            var req = (HttpWebRequest)WebRequest.Create(orgUrl);
            req.Method = "HEAD";
            try
            {
                using (var resp = req.GetResponse())
                {
                    bool res = resp.ContentType.ToLower(CultureInfo.InvariantCulture)
                        .StartsWith("image/");
                    if (res)
                        return orgUrl;
                    else
                        return "defualt_logo.jpg";
                }
            }
            catch
            {
                return "default_logo.jpg";
            }

        }
Run Code Online (Sandbox Code Playgroud)

这个功能起到了作用.但是,对于每个图像,它都会发出请求.我有一个列表视图,显示220条目.使用此方法搞砸了列表视图加载的时间.

注意:使用依赖注入本机调用此函数.

也许会有进一步的改进.有任何想法吗?

c# mono image xamarin xamarin-forms

4
推荐指数
1
解决办法
2692
查看次数

Xamarin自定义渲染器中的装配声明

我正在阅读Xamarin Forms文档,了解自定义渲染器,试图了解渲染器的每个实现所需的汇编属性实际上是什么.我看了一下AssembliesC#文档,似乎找不到(简单)的解释.按照文档中概述的MyEntry示例,有人可以了解一下这个程序集属性发生了什么/它实际上做了什么?

为清楚起见,这些是我所说的声明类型: [assembly: ExportRenderer (typeof (MyEntry), typeof (MyEntryRenderer))]

c# xamarin xamarin-forms

3
推荐指数
1
解决办法
1282
查看次数

是否有一个xamarin组件可以处理PIN输入?

我看到有一个iOS和iPad,P IN Code Control xamarin组件,它将为您提供PIN输入的编程数字键盘.如果没有使用Xamarin中的C#对整个事物进行编码,我宁愿找到一个组件.

我需要一个PIN代码控制,跨平台的xamarin组件,这是xamarin表单的目的.我们将在Android和iOS设备上使用它.

有没有人在Xamarin的Component Store上看到这样的组件,我使用了错误的搜索条件,PIN,键盘,数字

c# cross-platform xamarin xamarin-forms xamarin-component

3
推荐指数
1
解决办法
4774
查看次数

时间戳与秒

我在我的应用程序中使用Xamarin Forms,我需要用户能够以HH:mm:ss格式输入时间.所以,基本上我需要一个像这样的控件:

时间戳与秒

通过使用自定义iOS渲染,我已经能够从TimePicker中删除AM/PM部件来实现以下目标:

在此输入图像描述

这是我的渲染器代码:

public class TimePickerSecondsRenderer : TimePickerRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<TimePicker> e)
    {
        base.OnElementChanged(e);

        var timePicker = (UIDatePicker)Control.InputView;
        timePicker.Locale = new NSLocale("CA");

    }
}
Run Code Online (Sandbox Code Playgroud)

我认为这是朝着正确方向迈出的一小步,但在为秒添加第三列以及每列的标签时,我真的很茫然.

我看了看这篇文章,但到目前为止它并没有真正帮助我.

有没有人设法通过他们的Xamarin Forms项目实现这种控制?你介意分享一些指示吗?

c# xamarin.ios ios xamarin xamarin-forms

2
推荐指数
1
解决办法
3068
查看次数

System.DllNotFoundException:java-interop

我卸载了Xamarin Studio(因为xamarin是免费的)并试图在VS上运行我的应用程序,我收到此错误:

System.DllNotFoundException:java-interop

我不知道如何解决这个问题,已在互联网上搜索过,一无所获.

这是日志

    Loaded assembly: /storage/emulated/0/Android/data/MaoNaRoda.Droid/files/.__override__/System.Xml.XmlSerializer.dll
Loaded assembly: /storage/emulated/0/Android/data/MaoNaRoda.Droid/files/.__override__/System.ServiceModel.Internals.dll [External]
Loaded assembly: /storage/emulated/0/Android/data/MaoNaRoda.Droid/files/.__override__/Mono.Android.dll
Loaded assembly: /storage/emulated/0/Android/data/MaoNaRoda.Droid/files/.__override__/Java.Interop.dll [External]
03-31 15:12:06.457 D/Mono    ( 2254): Assembly Ref addref Java.Interop[0x9e01f9a0] -> System.Collections.Concurrent[0xb43f0700]: 2
03-31 15:12:06.457 D/Mono    ( 2254): Assembly Ref addref System.Collections.Concurrent[0xb43f0700] -> mscorlib[0xb4250dc0]: 4
03-31 15:12:06.457 D/Mono    ( 2254): Assembly Ref addref Java.Interop[0x9e01f9a0] -> System.Reflection[0xb43fc700]: 2
03-31 15:12:06.457 D/Mono    ( 2254): Assembly Ref addref System.Reflection[0xb43fc700] -> mscorlib[0xb4250dc0]: 5
03-31 15:12:06.469 D/Mono    ( 2254): Assembly Ref addref Java.Interop[0x9e01f9a0] -> System.Threading[0x9e01f280]: 2
03-31 …
Run Code Online (Sandbox Code Playgroud)

xamarin xamarin-forms

2
推荐指数
1
解决办法
901
查看次数