Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF数据网格滚动条不一致_C#_Wpf_Xaml_Datagrid - Fatal编程技术网

C# WPF数据网格滚动条不一致

C# WPF数据网格滚动条不一致,c#,wpf,xaml,datagrid,C#,Wpf,Xaml,Datagrid,我有一个Windows窗体应用程序,它需要一个带有宽垂直滚动条的数据网格。我构建了一个WPF用户控件,其中包含一个带有滚动条的DataGrid;我还构建了一个简单的Windows窗体测试窗体,其中包含一个ElementHost元素来承载用户控件 测试表单完全按照需要工作,显示一个宽的垂直滚动条。然而,当我在现有的WinForms应用程序中执行完全相同的操作时(我添加了一个ElementHost,其中用户控件作为子控件),却找不到滚动条(即使数据远远小于ElementHost的大小) 看起来测试表

我有一个Windows窗体应用程序,它需要一个带有宽垂直滚动条的数据网格。我构建了一个WPF用户控件,其中包含一个带有滚动条的DataGrid;我还构建了一个简单的Windows窗体测试窗体,其中包含一个ElementHost元素来承载用户控件

测试表单完全按照需要工作,显示一个宽的垂直滚动条。然而,当我在现有的WinForms应用程序中执行完全相同的操作时(我添加了一个ElementHost,其中用户控件作为子控件),却找不到滚动条(即使数据远远小于ElementHost的大小)

看起来测试表单和我的应用程序之间的行为应该是相同的-当行为不同且没有代码差异时,我如何调试它

<UserControl x:Class="OrdersGrid.OrdersGrid"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:app="clr-namespace:OrdersGrid"
         mc:Ignorable="d" Width="1014" Height="494"
         >
<UserControl.Resources>
    <app:StatusToBackgroundConverter x:Key="StatusToBackgroundConverter"/>

</UserControl.Resources>
<Grid Margin="0,0,0,0" Height="494">        
    <DataGrid HorizontalAlignment="Left" Margin="1,1,0,0" VerticalAlignment="Top" Height="492" Width="1012" x:Name="ordersGrid"
              SelectionChanged="DataGrid_SelectionChanged" AutoGenerateColumns="False" DataContext="orders" EnableRowVirtualization="True"
              VerticalScrollBarVisibility="Visible" >
        <DataGrid.Resources>
            <Style TargetType="ScrollBar">
                <Setter Property="Width" Value="50"/>
                <Setter Property="MinWidth" Value="50"/>
                <Setter Property="Visibility" Value="Visible" />
            </Style>                 
            <Style TargetType="DataGridCellsPresenter">
                <Setter Property="FontSize" Value="16"/>
            </Style>
            <SolidColorBrush x:Key="{x:Static DataGrid.FocusBorderBrushKey}" Color="#FF000000"/>               
        </DataGrid.Resources>
        <DataGrid.ColumnHeaderStyle>
            <Style TargetType="DataGridColumnHeader">
                <Setter Property="FontSize" Value="16"></Setter>
                <Setter Property="Height" Value="30"/>
                <Setter Property="Foreground" Value="Blue"/>
            </Style>
        </DataGrid.ColumnHeaderStyle>
        <DataGrid.RowStyle>
            <Style TargetType="DataGridRow">
                <Setter Property="Background" Value="{Binding RelativeSource={RelativeSource Self},Path=Item.Status,Converter={StaticResource StatusToBackgroundConverter}}"/>

            </Style>
        </DataGrid.RowStyle>
        <DataGrid.Columns>                
            <DataGridTextColumn x:Name="orderId" Width="35" Binding="{Binding Num}" Header="" SortMemberPath="Num"/>
            <DataGridTextColumn x:Name="shipDate" Width="90" Binding="{Binding ShipDate}" Header="Ship Date" SortMemberPath="ShipDate"/>
            <DataGridTextColumn x:Name="Shipper" Width="55" Binding="{Binding Shipper}" Header="Via" SortMemberPath="Shipper"/>
            <DataGridTextColumn x:Name="ArrivDate" Width="95" Binding="{Binding ArrivDate}" Header="Must Arrive"/>
            <DataGridTextColumn x:Name="CustomerName" Width="120" Binding="{Binding customerName}" Header="Customer"/>
            <DataGridTextColumn x:Name="AddressCode" Width="95" Binding="{Binding PRSTADCD}" Header="ADCD"/>
            <DataGridTextColumn x:Name="CityState" Width="125" Binding="{Binding CityState}" Header="City State"/>
            <DataGridTextColumn x:Name="OrderNum" Width="105" Binding="{Binding OrderNum}" Header="Order Num"/>
            <DataGridTextColumn x:Name="CasesEaches" Width="95" Header="Order" Binding="{Binding BinCasesEaches}"/>
            <DataGridTextColumn x:Name="CustPONum" Width="95" Binding="{Binding CustPONum}" Header="Cust PO" Visibility="Hidden"/>
            <DataGridTextColumn x:Name="Status" Width="100" Binding="{Binding Status}" Header="Status" Visibility="Visible" SortMemberPath="Status"/>
            <DataGridTextColumn x:Name="SortKey" Width="95" Binding="{Binding SortKey}" Visibility="Hidden"/>
            <DataGridTextColumn x:Name="PickedBy" Width="95" Binding="{Binding PickedBy}"  Visibility="Hidden"/>
            <DataGridTextColumn x:Name="ClosedBy" Width="95" Binding="{Binding ClosedBy}"  Visibility="Hidden"/>
            <DataGridTextColumn x:Name="ClosedShortBy" Width="95" Binding="{Binding ClosedShortBy}"  Visibility="Hidden"/>
        </DataGrid.Columns>
    </DataGrid>
</Grid>


您可以共享用户控件的xaml吗?您所说的是带有WPF控件的Windows窗体应用程序。就像@PiyushParashar说的,请提供XAML,编辑您的问题,使其更具可读性且不易混淆。编辑我的帖子以包含UserControl的XAML…我可能已经解决了我自己的问题-ElementHost width在后面的代码中设置了,因此没有足够的宽度来显示宽滚动条-一旦我处理了宽度约束,垂直滚动条现在似乎始终显示。