小编Pat*_*ick的帖子

如何真正避免在Xamarin.Forms中同时点击多个按钮?

我在视图中使用多个按钮,每个按钮都会显示自己的弹出页面.同时单击多个按钮时,它一次转到不同的弹出页面.

我创建了一个包含3个按钮的示例内容页面(每个按钮都转到不同的弹出页面)来演示此问题:

截图

XAML页面:

<ContentPage.Content>
    <AbsoluteLayout>

        <!-- button 1 -->
        <Button x:Name="button1" Text="Button 1"
            BackgroundColor="White" Clicked="Button1Clicked"
            AbsoluteLayout.LayoutFlags="All"
            AbsoluteLayout.LayoutBounds="0.5, 0.3, 0.5, 0.1"/>

        <!-- button 2 -->
        <Button x:Name="button2" Text="Button 2"
            BackgroundColor="White" Clicked="Button2Clicked"
            AbsoluteLayout.LayoutFlags="All"
            AbsoluteLayout.LayoutBounds="0.5, 0.5, 0.5, 0.1"/>

        <!-- button 3 -->
        <Button x:Name="button3" Text="Button 3"
            BackgroundColor="White" Clicked="Button3Clicked"
            AbsoluteLayout.LayoutFlags="All"
            AbsoluteLayout.LayoutBounds="0.5, 0.7, 0.5, 0.1"/>

        <!-- popup page 1 -->
        <AbsoluteLayout x:Name="page1" BackgroundColor="#7f000000" IsVisible="false"
            AbsoluteLayout.LayoutFlags="All"
            AbsoluteLayout.LayoutBounds="0.5, 0.5, 1.0, 1.0">
            <BoxView Color="Red"
                AbsoluteLayout.LayoutFlags="All"
                AbsoluteLayout.LayoutBounds="0.5, 0.5, 0.75, 0.3"/>
            <Label Text="Button 1 clicked" TextColor="White"
                HorizontalTextAlignment="Center"
                AbsoluteLayout.LayoutFlags="All"
                AbsoluteLayout.LayoutBounds="0.5, 0.45, …
Run Code Online (Sandbox Code Playgroud)

c# xamarin.forms

13
推荐指数
3
解决办法
4098
查看次数

为MemoryCache(或任何缓存)实现Generic Get <T>

我正在尝试写一个"简单"的 Generic Get<T>; 延期 System.Runtime.MemoryCache.

为什么"简单"?因为我通常在缓存之前知道对象的真实类型,所以当我从缓存中检索它时,我不会以不可预测的方式转换它.

例如:如果布尔"true"值存储在cacheKey"id"的缓存中,那么

Get<string>("id") == "true";
Get<int>("id") == 1; // any result > 0 is okay
Get<SomeUnpredictableType> == null; // just ignore these trouble conversions
Run Code Online (Sandbox Code Playgroud)

这是我不完整的实现:

public static T DoGet<T>(this MemoryCache cache, string key) {
    object value = cache.Get(key);
    if (value == null) {
        return default(T);
    }
    if (value is T) {
        return (T)value;
    }

    // TODO: (I'm not sure if following logic is okay or not)
    // 1. if T and value …
Run Code Online (Sandbox Code Playgroud)

c# generics caching type-conversion memorycache

9
推荐指数
1
解决办法
2857
查看次数

在没有等待的情况下使用async的最佳做法是什么?

应用

我有一个View Model由多个项目引用或Views.

由于API,一些View项目是,async而另一些则不是.

View项目将其接口的实现注入到View Model使用IOC容器中.

考虑这个代码的最小例子

界面:

public interface IDatabase
{
    Task<Data> GetData();
}
Run Code Online (Sandbox Code Playgroud)

View Model等待GetData方法:

public class DisplayDataViewModel
{
     private readonly  IDatabase _database
     public DisplayDataViewModel(IDatabase database)
     {
          _database = database;
     }

     private async Task GetDataFromDatabase()
     {
         Data data = await _database.GetData();
         // do something with data...
     }
}
Run Code Online (Sandbox Code Playgroud)

Asynchronous View project使用Async函数来获取数据

public class AsynchronousViewDataBase : IDatabase
{
    public async Task<Data> GetData()
    {
        return …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading asynchronous async-await

8
推荐指数
2
解决办法
8608
查看次数

如何在Xamarin.Forms的列表视图中获取所选项的坐标?

我想得到列表视图中所选项目相对于屏幕的坐标(矩形边界:x,y,宽度和高度)(假设列表视图填满整个屏幕),这样我就可以在该位置创建一个对象,动画显示我的Xamarin.Forms应用程序中所选项目的一些细节.

xaml中的listview:

<ListView ItemTapped="ItemTapped"
    AbsoluteLayout.LayoutFlags="All"
    AbsoluteLayout.LayoutBounds="0.5, 0.5, 1.0, 1.0">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell Height="50">              
                <AbsoluteLayout>
                    <Label Text="{Binding Info}"
                        AbsoluteLayout.LayoutFlags="All"
                        AbsoluteLayout.LayoutBounds="0.1, 0.5, 0.7, 0.5"/>
                </AbsoluteLayout>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
Run Code Online (Sandbox Code Playgroud)

ItemTapped事件的c#代码:

void ItemTapped(object sender, EventArgs args)
{
    var listView = (ListView)sender; // the listview
    var selectedItem = args.Item; // the selected item

    // need to get selected item coordinates for the animation
    var selectedItemBounds = ...

    ...
}
Run Code Online (Sandbox Code Playgroud)

最终我想在带有listview的Xamarin.Forms中创建这样的东西(listview中的对象数量不同):

示例列表视图动画

c# xamarin.forms

8
推荐指数
2
解决办法
2110
查看次数

如何在Xamarin Forms中的Page.Toolbaritems之间添加行分隔符

我正在添加toolbar itemPage.ToolbarItems列表中,但我想在某些之间添加一个行分隔符toolbar item.我可以添加一个toolbar item带有线条图像的新图像,但是Action当按下该线条时我需要阻止它,并且它不允许我使用它null.它看起来也不太理想.

请注意,每个ToolbarItem都是通过C#代码添加的,而不是通过Xaml添加的.

这里有一些伪代码作为我现在的例子:

if(!ToolbarItems.Any())
{
    ToolbarItems.Add(new ToolbarItem("Page 1", null, NavigateToPage1(), ToolbarItemOrder.Secondary, 0);
    ToolbarItems.Add(new ToolbarItem("Page 2", null, NavigateToPage2(), ToolbarItemOrder.Secondary, 0);
    // <Insert Separator Here>
    if(boolVal) {
        ToolbarItems.Add(new ToolbarItem("Page 3", null, NavigateToPage3(), ToolbarItemOrder.Secondary, 0); 
    }
    ToolbarItems.Add(new ToolbarItem("Page 4", null, NavigateToPage4(), ToolbarItemOrder.Secondary, 0);
    ToolbarItems.Add(new ToolbarItem("Page 5", null, NavigateToPage5(), ToolbarItemOrder.Secondary, 0);
    // <Insert Separator Here>
    ToolbarItems.Add(new ToolbarItem("Page 6", null, NavigateToPage6(), ToolbarItemOrder.Secondary, 0);
}
Run Code Online (Sandbox Code Playgroud)

c# toolbar toolbaritems xamarin.forms

8
推荐指数
1
解决办法
649
查看次数

Xamarin.Forms - 数据更改时ListView不会更新

问题:数据更改但ListView不更新

我有一个ListS,其ItemsSource设置为

<ListView ItemsSource="{Binding ContactsGrouped}" 
Run Code Online (Sandbox Code Playgroud)

单击按钮时,我更新查询以仅返回包含字母"Je"的记录.我可以看到正确的东西被返回,并且ContactsGrouped正在更新,但UI不会改变.

public ObservableCollection<Grouping<string, Contact>> ContactsGrouped { get; set; }
Run Code Online (Sandbox Code Playgroud)

分组看起来像这样:

public class Grouping<K, T> : ObservableCollection<T>
{
    public K Key { get; private set; }

    public Grouping ( K key, IEnumerable<T> items )
    {
        Key = key;
        foreach ( var item in items )
            this.Items.Add( item );
    }
}
Run Code Online (Sandbox Code Playgroud)

鉴于我正在使用ObservableCollections,我希望该列表能够重绘.我错过了一些明显的东西吗

c# xamarin xamarin.forms

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

IIS 10 - 未找到文件或目录

我有一个在 Visual Studio 中制作的网络应用程序。每当我导航到它时,我都会收到 404。我可以访问例如:“xyz.net/res/image.png”,但是我不能“default.aspx”。

默认文档: 默认文档

捆绑: 捆绑

应用程序池: 应用程序池

当我导航到端口 80 上的本地主机时,会发生这种情况: 当我导航到端口 80 上的本地主机时,会发生这种情况。

我之前已经使用 IIS 设置并运行了一个 Web 服务器,但从那以后我重新安装了 Windows,但我无法弄清楚。在我修改它之前,我可以访问本地主机。文件路径似乎是正确的,但我认为否则无法访问 png 文件。任何帮助表示赞赏。

.net iis http-status-code-404 server

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

C++是否支持单个泛型方法而不是泛型类?

重要提示:这个问题已经很长了,如果这是你第一次阅读这篇文章我建议你从底部开始,因为解决方案是在一个回合的方式,但代码有点臭.

阅读完模板教程后,我能够更改现有类以支持泛型类型.但是,许多对象已经依赖于此,所以我正在寻找一种使方法通用而不是整个类的方法.

我尝试了以下内容,但看起来不支持此行为.

// foobar1.h
// Don't want the entire class to be generic.
//template<class T>
class FooBar1
{
public:
    template<class T> T Foo();
}

// foobar2.h
class FooBar2 : public FooBar1
{
}

// foobar1.cpp
template<class T>
T FooBar1::Foo()
{
    return something;
}

// test.cpp
FooBar1 fb1;
FooBar2 fb2 = fb1.Foo<FooBar2>();
Run Code Online (Sandbox Code Playgroud)

这应该不起作用,还是我在其他地方遇到的一个错误?

未定义的引用 FooBar2 Foo<FooBar2>()

为了实现我想要实现的目标,我在C#中如何做到这一点......

public class FooBar1
{
    public T Foo<T>()
        where T : FooBar1
    {
        return something;
    }
}

public class FooBar2 : …
Run Code Online (Sandbox Code Playgroud)

c# c++ templates

6
推荐指数
1
解决办法
2260
查看次数

模拟一个在RhinoMocks中接受委托的方法

我有以下课程:

public class HelperClass  
{  
    HandleFunction<T>(Func<T> func)
    {
         // Custom logic here

         func.Invoke();

         // Custom logic here  
}

// The class i want to test  
public class MainClass
{
    public readonly HelperClass _helper;

    // Ctor
    MainClass(HelperClass helper)
    {
          _helper = helper;
    }

    public void Foo()
    {
         // Use the handle method
         _helper.HandleFunction(() =>
        {
             // Foo logic here:
             Action1();
             Action2(); //etc..
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我只想测试MainClass.我HelperClass在测试中使用RhinoMocks进行模拟.
问题是,虽然我不感兴趣测试HandleFunction()我感兴趣的方法Action1,Action2以及HandleFunction()调用时发送的其他操作.
我如何模拟HandleFunction() …

c# unit-testing rhino-mocks

6
推荐指数
1
解决办法
5562
查看次数

如何为自定义Java对象创建编码器?

我正在使用以下类从Spark编码器创建bean

Class OuterClass implements Serializable {
    int id;
    ArrayList<InnerClass> listofInner;

    public int getId() {
        return id;
    }

    public void setId (int num) {
        this.id = num;
    }

    public ArrayList<InnerClass> getListofInner() {
        return listofInner;
    }

    public void setListofInner(ArrayList<InnerClass> list) {
        this.listofInner = list;
    }
}

public static class InnerClass implements Serializable {
    String streetno;

    public void setStreetno(String streetno) {
        this.streetno= streetno;
    }

    public String getStreetno() {
        return streetno;
    }
}

Encoder<OuterClass> outerClassEncoder = Encoders.bean(OuterClass.class);
Dataset<OuterClass> ds = spark.createDataset(Collections.singeltonList(outerclassList), outerClassEncoder)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

Exception …
Run Code Online (Sandbox Code Playgroud)

java spark-java apache-spark apache-spark-2.0

6
推荐指数
1
解决办法
9875
查看次数