0

ICollectionView実装にバインドされたItemsSourceを持つWPFDataGridがあります。DataGridがインスタンス化される前に、コレクションはアイテムでいっぱいです。

DataGrid内のすべての列はDataGridTemplateColumnタイプです。すべての列には、明示的に幅が指定されています。

列が多すぎてビューに収まらないため、水平方向のスクロールが必要です。

DataGrid.Horizo​​ntalScrollBarVisibilityプロパティがAutoの場合、アイテムを垂直方向にスクロールするまで、水平スクロールバーは表示されません。

DataGrid.Horizo​​ntalScrollBarVisibilityプロパティがVisibleの場合、アイテムを垂直方向にスクロールするまで、水平スクロールバーは有効になりません。

他のプロパティ(Width、MaxWidth、MinWidth、EnableColumnVirtualization、ScrollViewer.CanContentScroll、SelectionMode、SelectionUnit)を変更しても効果はありませんでした。

DataGridをScrollViewerに入れることはオプションではありません。その場合、垂直スクロールバーはコンテンツとともに水平方向にスクロールするからです。

では、この動作の原因は何ですか?何ができる?

アップデート

UserControlのXAML

<UserControl
    x:Class="Belrost.Windows.EventListEditor2"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="4" />
            <RowDefinition Height="23" />
            <RowDefinition Height="4" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="8" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="75" />
            <ColumnDefinition Width="4" />
            <ColumnDefinition Width="75" />
            <ColumnDefinition Width="4" />
            <ColumnDefinition Width="75" />
            <ColumnDefinition Width="8" />
        </Grid.ColumnDefinitions>
        <DataGrid
            Grid.Row="0" Grid.RowSpan="1"
            Grid.Column="0" Grid.ColumnSpan="8"
            ItemsSource="{Binding}"
            IsSynchronizedWithCurrentItem="True"
            AutoGenerateColumns="False"
            SelectionMode="Extended"
            SelectionUnit="FullRow">
            <DataGrid.Columns>
                <DataGridTemplateColumn Header="Timestamp" Width="120">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Timestamp}" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="Machine" Width="120">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Machine}" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="Principal" Width="120">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Principal}" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="MemberName" Width="120">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding MemberName}" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="MemberFile" Width="120">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding MemberFile}" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="MemberLine" Width="120">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding MemberLine}" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="MemberTime" Width="120">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding MemberTime}" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</UserControl>

ユーザーコントロールは、次のようにTabControlに配置されます

<TabControl.ContentTemplate>
    <DataTemplate>
        <ContentControl Content="{Binding}">
            <ContentControl.Resources>
                <DataTemplate DataType="{x:Type w:EventListView}">
                    <w:EventListEditor2 />
                </DataTemplate>
            </ContentControl.Resources>
        </ContentControl>
    </DataTemplate>
</TabControl.ContentTemplate>

ノート

ユーザーコントロールのコードをコピーしてDataTemplateに貼り付けると、すべてが正常に機能します。したがって、問題はUserControlの使用に関連しています。

4

0 に答える 0