scroll - WPF Datagrid에서 스크롤 막대를 활성화하려면 어떻게해야합니까?




(5)

WPF4

<DataGrid AutoGenerateColumns="True" Grid.Column="0" Grid.Row="0"
      ScrollViewer.CanContentScroll="True" 
      ScrollViewer.VerticalScrollBarVisibility="Auto"
      ScrollViewer.HorizontalScrollBarVisibility="Auto">
</DataGrid>

with : <ColumnDefinition Width="350" /> & <RowDefinition Height="300" /> 잘 동작합니다.

<ColumnDefinition Width="Auto" /> & <RowDefinition Height="300" /> 에는 스크롤 막대가 표시되지 않습니다.

또한 <ColumnDefinition Width="*" /><RowDefinition Height="300" /> 이 잘 작동합니다 (외부 <Grid> 내에 중첩 된 경우).

이 기사 에서 다음 Northwind WPF Toolkit Datagrid 코드를 실행하면 DataGrid를 얻을 수 있지만 스크롤 막대없으므로 사용자는 DataGrid의 일부만 볼 수 있습니다. 2009 년 3 월 최신 버전을 사용하고 있습니다.

WPF Datagrid에 스크롤 막대가 있도록 지정하려면 무엇이 필요합니까?

ScrollViewer에 DataGrid를 넣으려고했으나 도움이되지 않았습니다.

XAML :

<Window x:Class="TestDataGrid566.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit"
    Title="Window1" Height="600" Width="800">
    <StackPanel>
        <toolkit:DataGrid x:Name="TheDataGrid" AutoGenerateColumns="True"/>
    </StackPanel>
</Window>

코드 숨김 :

using System.Linq;
using System.Windows;
using TestDataGrid566.Model;

namespace TestDataGrid566
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();

            NorthwindDataContext db = new NorthwindDataContext();
            var customers = from c in db.Customers
                            select c;
            TheDataGrid.ItemsSource = customers;
        }
    }
}

DataGridGrid , DockPanel , ContentControl 하거나 Window 직접 배치하십시오. 수직 지향적 인 StackPanel 은 아이들이 요구하는 수직 공간이 무엇이든 상관없이 아이들에게 줄 것이다.


부모 컨테이너 RowDefinition Height가 "Auto"로 설정된 경우 스크롤 막대의 마개도 해당됩니다.

또는 높이 "*"를 설정할 수 있습니다.

내 사건에서 어떤 일이 있었는지.


열과 행에 대해 정의 된 높이와 너비가있는 격자를 추가하십시오. 그런 다음 ScrollViewer를 추가하고 내부에 dataGrid를 추가합니다.


리소스 사전 (Windows.Forms에서 자주 사용되는 Resources.resx가 아닌) 내의 비트 맵 리소스에 투명 배경을 설정하는 코드입니다. 이 메서드는 InitializeComponent () - 메서드보다 먼저 호출합니다. 메소드 'ConvertBitmap (Bitmap source)'와 BitmapFromSource (BitmapSource bitmapsource)는 위의 멜버 스에서 언급 한 게시물에 언급되어 있습니다.

private void SetBitmapResourcesTransparent()
    {
        Image img;
        BitmapSource bmpSource;
        System.Drawing.Bitmap bmp;
        foreach (ResourceDictionary resdict in Application.Current.Resources.MergedDictionaries)
        {
            foreach (DictionaryEntry dictEntry in resdict)
            {
                // search for bitmap resource
                if ((img = dictEntry.Value as Image) is Image 
                    && (bmpSource = img.Source as BitmapSource) is BitmapSource
                    && (bmp = BitmapFromSource(bmpSource)) != null)
                {
                    // make bitmap transparent and assign it back to ressource
                    bmp.MakeTransparent(System.Drawing.Color.Magenta);
                    bmpSource = ConvertBitmap(bmp);
                    img.Source = bmpSource;
                }
            }

        }

    }




wpf datagrid scroll