小编Mar*_*Law的帖子

如何向 ObservableCollection 添加项目?

这听起来像是一个微不足道的问题,但我在网上找不到任何有效的东西。我正在使用PRISM并且在我走开之前迈出了一步,永远不会回到这个框架。原因如下:

我有漂亮ObservableCollection,如果我给你一个列表,并忘掉它基本的工作原理。但这不是 的目标ObservableCollection,对吧?它改变了..所以,这是集合:

<DataGrid ItemsSource="{Binding Items, Mode=TwoWay}" AutoGenerateColumns="True" />

    private ObservableCollection<Item> _items = new ObservableCollection<Item>();
    public ObservableCollection<Item> Items
    {
        get { return _items; }
        set { SetProperty(ref _items, value); }
    }
Run Code Online (Sandbox Code Playgroud)

所以,这里是:

        Items = InitializeItems(); // Works great!
        Items.Add(new Item() { ItemId = 1 }); // Also works
Run Code Online (Sandbox Code Playgroud)

但是之后..

        for (int i = 1; i < 10; i++)
        {
            Items.Add(new Item() { ItemId = i });
        }
Run Code Online (Sandbox Code Playgroud)

失败.. 有时,除了:

PresentationFramework.dll 中出现类型为“System.InvalidOperationException”的未处理异常 附加信息:ItemsControl 与其项目源不一致。

AddRange() …

c# wpf prism observablecollection mvvm

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

Xamarin.Forms 中的自定义 EventHandler 在 xaml 中不起作用

Xamarin.Forms,在 PCL 中,我有自定义控件,带有自定义事件:

public class TestGrid : Grid
{
    public EventHandler OnTapped;

    public TestGrid()
    {
        var tgr = new TapGestureRecognizer { NumberOfTapsRequired = 1 };
        tgr.Tapped += Tgr_Tapped;
        this.GestureRecognizers.Add(tgr);
    }

    private void Tgr_Tapped(object sender, EventArgs e)
    {
        OnTapped?.Invoke(sender, e);
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的起始页中,我有:

public partial class StartPage : ContentPage
{
    public StartPage()
    {
        InitializeComponent();
        BindingContext = new StartPageViewModel();
        MainGrid.OnTapped += OnGridTapped;
    }

    private void OnGridTapped(object sender, EventArgs e)
    {
        Debug.WriteLine("Tapped!");
    }
}
Run Code Online (Sandbox Code Playgroud)

我的 XAML 看起来像这样,它可以工作:

<v:TestGrid x:Name="MainGrid" />
Run Code Online (Sandbox Code Playgroud)

但! …

c# xamarin.ios xamarin.android xamarin xamarin.forms

0
推荐指数
1
解决办法
6614
查看次数