使用Xamarin.forms.DataGrid如何使表格的第一列固定在水平滚动条上. Xamarin.forms.DataGrid

ercv8c1e  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(227)

我正在使用Xamarin.Forms.DataGrid,现在我想使表格的第一列固定在水平滚动上。请看图片。
如何实现这一点有什么想法吗?

<dg:DataGrid ItemsSource="{Binding Details}"  SelectionEnabled="True" SelectedItem="{Binding SelectedProfesstional}" RowHeight="70" HeaderHeight="50" 
                                BorderColor="#CCCCCC"  HeaderBackground="#E0E6F8" PullToRefreshCommand="{Binding RefreshCommand}" IsRefreshing="{Binding IsRefreshing}" ActiveRowColor="#8899AA">
    <x:Arguments>
        <ListViewCachingStrategy>RetainElement</ListViewCachingStrategy>
    </x:Arguments>
    <dg:DataGrid.HeaderFontSize>
        <OnIdiom x:TypeArguments="x:Double">
            <OnIdiom.Tablet>15</OnIdiom.Tablet>
            <OnIdiom.Phone>12</OnIdiom.Phone>
        </OnIdiom>
    </dg:DataGrid.HeaderFontSize>
    <dg:DataGrid.Columns>
       
        <dg:DataGridColumn PropertyName="Name" Width="3*" >
            <dg:DataGridColumn.FormattedTitle>
                <FormattedString>
                    <Span Text="User Name" FontSize="13" TextColor="Black" FontAttributes="Bold" />
                </FormattedString>
                
            </dg:DataGridColumn.FormattedTitle>
        </dg:DataGridColumn>
        <dg:DataGridColumn Title="User Email" PropertyName="Email" Width="2*"/>
        <dg:DataGridColumn Title="User Phone" PropertyName="Number" Width="1*"/>

    </dg:DataGrid.Columns>

    <dg:DataGrid.RowsBackgroundColorPalette>
        <dg:PaletteCollection>
            <Color>#F2F2F2</Color>
            <Color>#FFFFFF</Color>
        </dg:PaletteCollection>
    </dg:DataGrid.RowsBackgroundColorPalette>
</dg:DataGrid>
f1tvaqid

f1tvaqid1#

有许多方法可以在水平滚动时实现固定列。

    • 方法1:**

根据this thread,您可以使用开放源代码:Zumero DataGrid,支持滚动,支持horizontalvertical,可选顶部冻结表头行,可选左侧冻结列等。

    • 方法2:**

基于this thread,您可以从DataGrid中添加一个ScrollView,并设置Orientation="Both",如下所示:

<ScrollView Orientation="Both">
    <dg:DataGrid ItemsSource="{Binding Teams}" SelectionEnabled="True" SelectedItem="{Binding SelectedTeam}"
                     RowHeight="70" HeaderHeight="50" BorderColor="#CCCCCC" HeaderBackground="#E0E6F8"
                     PullToRefreshCommand="{Binding RefreshCommand}" IsRefreshing="{Binding IsRefreshing}"
                    WidthRequest="600" 
                     ActiveRowColor="#8899AA">

相关问题