Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.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# 部分ListView被切断_C#_Wpf_Pdf - Fatal编程技术网

C# 部分ListView被切断

C# 部分ListView被切断,c#,wpf,pdf,C#,Wpf,Pdf,我使用这段代码将均匀的宽度分布到所有列,但它仍然通过其父列,生成一个水平滚动 private void listView_SizeChanged(object sender, SizeChangedEventArgs e) { var newWidth = listView.ActualWidth / gridView.Columns.Count; foreach (var column in gridView.Columns) {

我使用这段代码将均匀的宽度分布到所有列,但它仍然通过其父列,生成一个水平滚动

private void listView_SizeChanged(object sender, SizeChangedEventArgs e)
    {
        var newWidth = listView.ActualWidth / gridView.Columns.Count;
        foreach (var column in gridView.Columns)
        {
            column.Width = newWidth;
        }
    }

因此,当我将其转换为PDF文件时,它会生成如下内容:

我已经将列表视图的宽度调整为A4纸的宽度。哦,这张纸是字母大小的,这就是为什么右边有一个白色间距

public void CreateMyWPFControlReport()
    {

        FixedDocument fixedDoc = new FixedDocument();
        PageContent pageContent = new PageContent();
        FixedPage fixedPage = new FixedPage();
        someGrid.Children.Remove(listView);
        listView.Width = 96 * 8.267;
        //Create first page of document
        fixedPage.Children.Add(listView);
        ((System.Windows.Markup.IAddChild)pageContent).AddChild(fixedPage);
        fixedDoc.Pages.Add(pageContent);
        //Create any other required pages here


        MemoryStream lMemoryStream = new MemoryStream();
        {
            Package package = Package.Open(lMemoryStream, FileMode.Create);
            XpsDocument xpsd = new XpsDocument(package);
            XpsDocumentWriter xw = XpsDocument.CreateXpsDocumentWriter(xpsd);
            xw.Write(fixedDoc);
            xpsd.Close();
            package.Close();
        }

        var pdfXpsDoc = PdfSharp.Xps.XpsModel.XpsDocument.Open(lMemoryStream);
        try
        {
            PdfSharp.Xps.XpsConverter.Convert(pdfXpsDoc, @"C:/nye/affaf.pdf", 0);
        }
        catch (IOException ex)
        {
            MessageBox.Show("File is open, please close first");
        }
    }

是什么导致了这种行为?虽然我可以一点一点地减少宽度,但这会有点耗时。或者我需要这样做吗?

要删除水平滚动,请尝试在XAML中设置ListView的
ScrollViewer.HorizontalScrollBarVisibility
(附加属性)

 <ListView x:Name="listView" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ... >
    ...       
 </ListView>
要在XAML中使用此值转换器,请将其添加为资源。传递给converts Convert()方法的
值是整个listview的宽度。我们希望返回该值除以列数。例如,使用四个GridViewColumns

<Window.Resources>
    <local:ListViewEvenColumnWidthConverter x:Key="EvenColumnWidthConverter" ColumnCount="4" />
</Window.Resources>

...

 <ListView x:Name="listView" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
     <ListView.View>
         <GridView>
             <GridViewColumn Header="Date" Width="{Binding ElementName=listView, Path=ActualWidth, Converter={StaticResource EvenColumnWidthConverter}}" />
             <GridViewColumn Header="Supplier" Width="{Binding ElementName=listView, Path=ActualWidth, Converter={StaticResource EvenColumnWidthConverter}}" />
             <GridViewColumn Header="Product" Width="{Binding ElementName=listView, Path=ActualWidth, Converter={StaticResource EvenColumnWidthConverter}}" />
             <GridViewColumn Header="Quantity Sold" Width="{Binding ElementName=listView, Path=ActualWidth, Converter={StaticResource EvenColumnWidthConverter}}" />
             ...
        </GridView>
    </ListView.View>
        Test Text
</ListView>

...
...
测试文本

我对ListView不太熟悉,但可以从实际宽度中减去2并将其除以,或者尝试将所有列的宽度设置为*。我想我确实需要一些尝试和错误来解决这个问题,因为您的水平滚动条要么是四舍五入“错误”,要么是涉及到边框。您还可以在运行时检查窗口。Visual studio 2015和2017具有内置功能。黑条功能?不一定。边框并不总是可见的,但充当另一个控件的容器。在任何情况下,请在运行时检查listview并查看列,以及它们是否包装在宽度或厚度大于0的容器控件中。它仍然会生成一个水平滚动条,尽管
ScrollViewer。HorizontalScrollBarVisibility
确实删除了滚动条。没关系,它起作用了。忘了取下旧的敞篷车,我可以帮忙。
<Window.Resources>
    <local:ListViewEvenColumnWidthConverter x:Key="EvenColumnWidthConverter" ColumnCount="4" />
</Window.Resources>

...

 <ListView x:Name="listView" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
     <ListView.View>
         <GridView>
             <GridViewColumn Header="Date" Width="{Binding ElementName=listView, Path=ActualWidth, Converter={StaticResource EvenColumnWidthConverter}}" />
             <GridViewColumn Header="Supplier" Width="{Binding ElementName=listView, Path=ActualWidth, Converter={StaticResource EvenColumnWidthConverter}}" />
             <GridViewColumn Header="Product" Width="{Binding ElementName=listView, Path=ActualWidth, Converter={StaticResource EvenColumnWidthConverter}}" />
             <GridViewColumn Header="Quantity Sold" Width="{Binding ElementName=listView, Path=ActualWidth, Converter={StaticResource EvenColumnWidthConverter}}" />
             ...
        </GridView>
    </ListView.View>
        Test Text
</ListView>