小编Éde*_*cha的帖子

Xamarin CollectionView 缓慢滚动

我有一个显示聊天消息的集合视图,它有 10 个可能的数据模板。每个数据模板都包含一个 flexlayout(因为我需要在左侧或右侧水平对齐它,就像聊天气泡一样),在这些 flexlayouts 中,我们有一个单独的网格,可以显示图像、标签、地图或媒体播放器。它加载非常快,但滚动时非常慢。我试图取消 flexlayout,但网格不遵守我需要的 LayoutOptions End/Start,然后我用填充屏幕(水平)的 ContentView 交换了 FlexLayout,我能够水平对齐它的孩子。我注意到此更改没有性能改进,甚至可能变得更糟。此外,我已经阅读并按照优化应用程序性能的建议进行了更改,但似乎还不够。

下面我有我的collectionview标签和一个数据模板的例子,其他的非常相似,几乎没有区别。我的疑问是如何改进这种情况?

集合视图

<CollectionView x:Name="ChatCollectionView" SelectionMode="None" HorizontalScrollBarVisibility="Never" VerticalScrollBarVisibility="Always" ItemsUpdatingScrollMode="KeepLastItemInView" ItemTemplate="{StaticResource MsgTemplateSelector}" Margin="5,0,5,0" />
Run Code Online (Sandbox Code Playgroud)

数据模板之一

<DataTemplate x:Key="DefaultMsg">
    <FlexLayout Direction="Row" MinimumWidthRequest="50" JustifyContent="{Binding MsgAlign}">
            <Grid Padding="0" Margin="0,10,0,0">
                <Grid.RowDefinitions>
                    <RowDefinition />
                    <RowDefinition Height="20"></RowDefinition>
                </Grid.RowDefinitions>

                <BoxView Grid.Column="0" Grid.ColumnSpan="1" Grid.Row="0" Grid.RowSpan="2" CornerRadius="5" BackgroundColor="{Binding MsgBg}" />
                <Label Grid.Row="0" Grid.Column="0" Text="{Binding msg}" TextColor="Black" />

                <Grid Grid.Row="1" Grid.Column="0">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="20" />
                    </Grid.ColumnDefinitions>

                    <Label Grid.Column="0" Grid.Row="0" TextColor="DarkGray" FontSize="12">
                        <Label.FormattedText>
                            <FormattedString>
                                <Span Text="&#xf017; "> …
Run Code Online (Sandbox Code Playgroud)

c# performance collectionview xamarin xamarin.forms

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

如何通过 C#/Xamarin 中的 webview 的链接调用 whatsapp?

我找到了一些例子,但对于java。

链接是:

<a href="whatsapp://send?text=message">
Run Code Online (Sandbox Code Playgroud)

MainPage.xaml.cs:

public void Webnav_Navigating(object sender, WebNavigatingEventArgs e)
{
    string url = e.Url;
    if (url.StartsWith("whatsapp://"))
    {
        // what I need here?
     }   
 }
Run Code Online (Sandbox Code Playgroud)

c# android xamarin xamarin.forms

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

向 ObservableCollection 添加元素会导致异常 Index was out of range

我有一个代码,允许用户选择一个文件,将一些有关它的信息添加到可观察的集合中并显示上传进度,完成后,它将图像绑定到图像视图。它立即可以正常工作,但如果重复该过程,则会引发异常:

System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
  at at (wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.43(intptr,intptr)
  at at (wrapper native-to-managed) Android.Runtime.DynamicMethodNameCounter.43(intptr,intptr)
Run Code Online (Sandbox Code Playgroud)

插入新元素并获取其索引的代码

switch(x){

 // some code...

    case 6:

        // .... some code 


            _ = Task.Run(async () => {
            try
            {
                int i = default;

            Msg newmsg2 = new Msg() { UploadProgress = 0.0, UploadProgressVisibility = true, IsImageSend = true, ImageSend = "@drawable/icon_default" };

            valuesLock.EnterWriteLock();
            try
            {
                // THE ISSUE IS …
Run Code Online (Sandbox Code Playgroud)

c# collections observablecollection xamarin indexoutofrangeexception

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