wpf DATAGRID 滚动条的问题

页面上外层有一个滚动条,是页面级的滚动条,里面有表格组件(datagrid)。

 当页面内容多向下滚动时,一切正常。但是如果滚动到datagrid上面时,

 datagrid虽然没有出现滚动条,但是感觉它也自动获得了焦点,这个时候,页面滚动条就滚不动了。

 寻求高手,能不能帮帮忙看看是什么问题,怎么才能规避掉这个问题。

 代码:
 XAML:
     <ScrollViewer VerticalScrollBarVisibility="Visible"  IsTabStop="True" CanContentScroll="True">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="400"/>
            <RowDefinition Height="200"/>
            <RowDefinition Height="200"/>
        </Grid.RowDefinitions>
     <Grid Background="Red">
            <DataGrid ItemsSource="{Binding}" ScrollViewer.CanContentScroll="True" 
              CanUserReorderColumns="False"
              CanUserSortColumns="False" Focusable="False"
              IsReadOnly="True" AutoGenerateColumns="False" x:Name="dataGrid1" Margin="0,69,0,183">
        <DataGrid.Columns>
            <DataGridTextColumn Header="String" Binding="{Binding String}" Width="200"/>
            <DataGridTextColumn Header="Int" Binding="{Binding Int}" Width="100"/>
            <DataGridTextColumn Header="Double" Binding="{Binding Double}" Width="auto"/>
        </DataGrid.Columns>
    </DataGrid>
</Grid>
        <TextBlock Grid.Row="1" Name="tb1" Text="{Binding X}"/>
        <TextBlock Grid.Row="1" Name="tb2" Text="{Binding Y}" Margin="600 0 0 0"/>
        <TextBlock Grid.Row="2" Text=""/>
    </Grid>

cs代码:
public Window1()
{
InitializeComponent();

        // Initialize the list
        List<TestRow> orders = new List<TestRow>();

        // Add random words
        Random r = new Random();
        for (int i = 0; i < 6; i++)
        {
            orders.Add(new TestRow() { String = GetRandomString(r, 25), Int = r.Next(), Double = r.NextDouble() });
        }

        // Set the data context
        this.DataContext = orders;

        tb1.DataContext = this;
        tb2.DataContext = this;
    }

    public string GetRandomString(Random rnd, int length)
    {
        string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
        StringBuilder sb = new StringBuilder();
        while (length-- > 0)
            sb.Append(chars[(int)(rnd.NextDouble() * chars.Length)]);
        return sb.ToString();
    }



            页面截图:
            ![图片说明](https://img-ask.csdn.net/upload/201705/07/1494164859_441370.png)

2个回答

帮助不了你,我也不知道!

DataGrid本身显示内容的区域就已经带了滚动条控件了,如果可以保证DataGrid的内容不需要滚动,可以重写DataGrid的ControlTemplate。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!