小编Tho*_*ler的帖子

从ViewModel绑定到Xamarin.Forms.Maps.Map

我正在使用显示地图的页面处理Xamarin.Forms应用程序.XAML是:

<maps:Map x:Name="Map">
    ...
</maps:Map>
Run Code Online (Sandbox Code Playgroud)

我知道可以从页面的代码隐藏中访问地图,如下所示:

var position = new Position(37.79762, -122.40181);
Map.MoveToRegion(new MapSpan(position, 0.01, 0.01));
Map.Pins.Add(new Pin
{
    Label = "Xamarin",
    Position = position
});
Run Code Online (Sandbox Code Playgroud)

但是因为这段代码会打破应用程序的MVVM架构,所以我更喜欢Map从我的ViewModel 访问该对象,而不是直接从View /页面访问 - 直接使用它,就像在上面的代码中一样,或者通过数据绑定到它的属性.

有人知道如何做到这一点吗?

xaml dictionary mvvm xamarin.forms

8
推荐指数
3
解决办法
6663
查看次数

Web请求失败,但仅适用于localhost和使用System.Net.HttpWebRequest时

我有一个非常奇怪的问题System.Net.HttpWebRequest,这让我疯狂:当我用localhost地址运行时,它要么非常慢(大约30秒),要么在大多数情况下完全超时.这只发生在目标请求中localhost,并且仅来自C#代码.

具体来说,以ASP.NET Web API项目为例,当我有这个代码时:

[Test]
public void TestRequest()
{
    var request = WebRequest.Create("http://localhost:64497/api/values");
    WebResponse response = request.GetResponse();
}
Run Code Online (Sandbox Code Playgroud)

..大部分时间都会因此异常而失败:

System.Net.WebException:无法连接到远程服务器
----> System.Net.Sockets.SocketException:连接尝试失败,因为连接方在一段时间后没有正确响应或建立连接失败,因为连接的主机未能回复127.0.0.1:64497

通过检查.NET代码,我将错误跟踪到WSAConnect API返回一个非null值,但我看不出这有多大帮助.(但是,这是一个32位API,而我在64位系统上运行.可能有一些奇怪的32/64bit问题吗?)

当我使用localhost之外的地址(例如http://www.google.com)运行上述代码时,它的行为正常,我的响应时间大约为1秒.此外,当我从不同的客户端(我使用Chrome的高级REST客户端)提交上述请求时,我得到了正常的行为:由于初始编译,第一个请求的延迟时间约为5-8秒,响应非常短所有后续请求的时间(20-40毫秒).

鉴于这些发现,对我来说似乎很明显,问题必须来自于特定于System.Net.HttpWebRequest课程实施的某些内容......

Web应用程序本身托管在IIS Express上,但我很确定这是无关紧要的,因为上述请求永远不会到达Web服务器(我通过从命令行运行IIS Express然后检查来自的请求来检查这两者以及每个ProcessMonitor).

更多信息:我正在运行Win 8.1 64位和VS 2013 SP4专业版.系统的HOST文件未经修改,即它不包含任何条目.

到目前为止我尝试过的事情:

  • 在管理员模式下运行VS.
  • 关闭所有防火墙和防病毒软件
  • 使用IIS而不是IIS Express
  • 将代理设置显式设置为null,每个代码和每个配置
  • 检查每个ProcessMonitor的IIS Express进程- 没有结果(正如我所说,我很确定Web服务器没有直接涉及这个问题)
  • localhost127.0.0.1

我不明白问题是什么,我在网上找不到任何相关信息.我甚至没有更多的想法,我可以尝试追踪错误.换句话说:我完全坚持这一点,它有效地阻止我编写针对本地托管网站的任何集成测试.任何帮助/提示/提示都非常感谢.

c# localhost httpwebrequest

7
推荐指数
1
解决办法
2066
查看次数

为什么我的自定义控件总是只读?

我正在开发一个LightSwitch自定义控件,它能够(好吧,至少这是......)根据区分值绑定和编辑各种不同的属性.

让我再解释一下.该表如下所示: 在此输入图像描述

现在,基于值Datenformat,控件将动态绑定到ErgebnisBool,ErgebnisDatum依此类推,并DataTemplate从控件中选择适当的值xaml. ErgebnisAnzeige是一个计算文本属性,它包含一个只读显示字符串.

控件的xaml如下:

<UserControl x:Class="EuvControlsExtension.Presentation.Controls.ProzessErgebnisEdit"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:framework ="clr-namespace:Microsoft.LightSwitch.Presentation.Framework;assembly=Microsoft.LightSwitch.Client"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
    xmlns:ct="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.Input"
    xmlns:multi="clr-namespace:EuvControlsExtension.Presentation.Controls"
    xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit"
    mc:Ignorable="d"
    x:Name="HostControl">

  <multi:MtTemplateSelector x:Name="MyTemplateSelector" 
                            Content="{Binding Path=RootEntity, Mode=TwoWay, ElementName=HostControl, UpdateSourceTrigger=Default}" 
                            HorizontalContentAlignment="Stretch" 
                            VerticalContentAlignment="Center"
                            IsHitTestVisible="False">

        <!--Zahl-->
        <multi:MtTemplateSelector.ZahlTemplate>
            <DataTemplate>
                <TextBox HorizontalAlignment="Stretch"
                 Text="{Binding Path=RootEntity.ErgebnisZahl, ElementName=HostControl, Mode=TwoWay, UpdateSourceTrigger=Default, ValidatesOnExceptions=True, NotifyOnValidationError=True}"/>
            </DataTemplate>
        </multi:MtTemplateSelector.ZahlTemplate>

        <!--Bool-->
        <multi:MtTemplateSelector.BoolTemplate>
            <DataTemplate>
                <CheckBox IsThreeState="True"
                 Content="{Binding Path=RootEntity.ErgebnisBool, ElementName=HostControl, Mode=TwoWay, UpdateSourceTrigger=Default, ValidatesOnExceptions=True, NotifyOnValidationError=True}"/>
            </DataTemplate>
        </multi:MtTemplateSelector.BoolTemplate>

    </multi:MtTemplateSelector>
</UserControl> 
Run Code Online (Sandbox Code Playgroud)

MtTemplateSelector类简单地返回当前的格式,这里没有什么特别合适的DataTemplate.

控件本身(ProzessErgebnisEdit)也很简单.它不会绑定实体实例(被调用RootEntity):

public partial …
Run Code Online (Sandbox Code Playgroud)

c# xaml visual-studio-lightswitch

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