Неисправность ширины WpfDatagridColumn - PullRequest
0 голосов
/ 14 октября 2011

У меня есть этот WpfDatagrid, и мне нужен столбец точной ширины, и у меня есть проблема.

Мне нужен столбец «Код» имеет ширину 100. Мне нужна колонка "Описание", чтобы авто занимало как можно больше Мне нужно, чтобы столбцы «Актив» и «Редактировать» занимали 100 ширины

То, как вы передаете мне код, остается таким же, как на картинке, и я не могу заполнить весь экран. Кто-нибудь может объяснить мне, что я делаю неправильно? [IMG] http://www.imagengratis.org/images/capturadh5jd.jpg[/img] http://www.imagengratis.org/images/capturadh5jd.jpg

   <Page x:Class="CHGUV.Guia.Farmacoterapeutica.Pages.Maestros.TramoEdad.TramoEdadPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:my1="clr-namespace:WpfCCLibrary;assembly=WpfCCLibrary"

      Title="Tramos de edad" xmlns:my="clr-namespace:WpfCCLibrary.Control;assembly=WpfCCLibrary" xmlns:mic="http://schemas.microsoft.com/wpf/2008/toolkit" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" d:DesignHeight="720" d:DesignWidth="1050" KeyDown="Page_PreviewKeyDown" Loaded="Page_Loaded">
    <Page.Resources>
        <DataTemplate x:Key="ItemTemplate">
            <StackPanel>
                <TextBlock Text="{Binding CFG_CAT_FAR_PosologiaTipo_Tipo}"/>
                <TextBlock Text="{Binding CFG_CAT_FAR_PosologiaTipo_Descripcion}"/>

            </StackPanel>
        </DataTemplate>
    </Page.Resources>
    <Grid>
<Grid.Background>
            <LinearGradientBrush EndPoint="0.5,1.5" StartPoint="0,0">
                <GradientStop Color="#FF87BDEB" Offset="0" />
                <GradientStop Color="White" Offset="1" />
            </LinearGradientBrush>
        </Grid.Background>
        <my:WpfLabel Content="Código" HorizontalAlignment="Left" Margin="39,0,0,107" Name="wpfLabel1" Height="21" VerticalAlignment="Bottom" />
            <my:WpfTextBox Height="23" HorizontalAlignment="Left" Margin="121,0,0,107" Name="TextBoxCodigo" VerticalAlignment="Bottom" Width="134" MaxLength="10" KeyDown="TextBoxCodigo_PreviewKeyDown" />
            <my:WpfLabel Content="Descripción" Height="22" HorizontalAlignment="Left" Margin="38,0,0,71" Name="wpfLabel2" VerticalAlignment="Bottom" Width="64" />
            <my:WpfTextBox Height="23" HorizontalAlignment="Left" Margin="121,0,0,71" Name="TextBoxDescripcion" VerticalAlignment="Bottom" Width="581" MaxLength="150" KeyDown="TextBoxDescripcion_PreviewKeyDown" />
            <my:WpfCheckBox Content="Modificable" Height="16" HorizontalAlignment="Left" Margin="324,0,0,110" Name="CheckBoxModificable" VerticalAlignment="Bottom" Estilo="StlWpfCheckBoxAzul" />
        <my:WpfCheckBox Content="Activo" Height="16" HorizontalAlignment="Left" Margin="428,0,0,110" Name="CheckBoxActivo" VerticalAlignment="Bottom" Estilo="StlWpfCheckBoxAzul" />
        <my:WpfImage Height="24" HorizontalAlignment="Left" Margin="261,0,0,106" Name="ImageCodigoNoNume"  Stretch="Fill" VerticalAlignment="Bottom" Width="24" Source="/CHGUV.Guia.Farmacoterapeutica.Pages;component/Images/Cancel_peq.png" Visibility="Collapsed" >

            </my:WpfImage>
            <Label Content="Tipo posología" Height="25" HorizontalAlignment="Left" Margin="33,0,0,36" Name="label1" VerticalAlignment="Bottom" />
        <my:WpfComboBox Height="23" HorizontalAlignment="Left" Margin="121,0,0,36" Name="comboBoxPosologia" VerticalAlignment="Bottom" Width="131" ItemsSource="{Binding CFG_CAT_FAR_PosologiaTipo}" Estilo="StlWpfComboBoxBlackAzul" />
        <my:WpfStatusBar  Visibility="Visible" Height="25" VerticalAlignment="Bottom" BorderThickness="0.7"  BorderBrush="#FF688CAF">
            <!--<my:WpfStatusBar.BorderThickness BorderBrush="White" BorderThickness="15" CornerRadius="15" />-->

            <my:WpfStatusBar.Background>

                <LinearGradientBrush EndPoint="0.0,5.5" StartPoint="0,0">
                    <GradientStop Color="#4682B4" Offset="0" />
                    <!--#FF688CAF-->
                    <GradientStop Color="White" Offset="1" />

                </LinearGradientBrush>
            </my:WpfStatusBar.Background>
            <StatusBarItem Name="statusBarItem" HorizontalAlignment="Left" Foreground="White" />
            <StatusBarItem Name="statusBarNoModificable" HorizontalAlignment="Center" Foreground="White" FontWeight="Bold" />
            <StatusBarItem Name="statusBarItemEstado" HorizontalAlignment="Right" Foreground="White" />
        </my:WpfStatusBar>
        <my:WpfDataGrid AutoGenerateColumns="False" Estilo="StlWpfDataGridAlternatingRows" Estilo_Header="WpfDataGridColumnHeaderAzul" Margin="12,12,12,147" Name="dataGridTramoEdad" SelectionChanged="dataGridTramoEdad_SelectionChanged" IsReadOnly="True">
            <my:WpfDataGrid.Columns>
                <mic:DataGridTextColumn Binding="{Binding CFG_CAT_FAR_TramoEdad_CodTramoEdad}" Header="Código" SortDirection="Ascending" SortMemberPath="CFG_CAT_FAR_TramoEdad" Width="80" MaxWidth="80" MinWidth="80">
                    <mic:DataGridTextColumn.ElementStyle>
                        <Style TargetType="TextBlock">
                            <Setter Property="TextAlignment" Value="Right" />

                        </Style>
                    </mic:DataGridTextColumn.ElementStyle>
                </mic:DataGridTextColumn>
                <mic:DataGridTextColumn Binding="{Binding CFG_CAT_FAR_TramoEdad_DescripcionTramo}" Header="Descripción" SortMemberPath="CFG_CAT_FAR_TramoEdad"  Width="Auto">
                    <mic:DataGridTextColumn.ElementStyle>
                        <Style TargetType="TextBlock">
                            <Setter Property="TextWrapping" Value="Wrap" />
                        </Style>
                    </mic:DataGridTextColumn.ElementStyle>
                </mic:DataGridTextColumn>
                <!--<mic:DataGridTextColumn Binding="{Binding CFG_CAT_FAR_TramoEdad_TipoPosol}" Header="Tipo posología" SortDirection="Ascending" SortMemberPath="CFG_CAT_FAR_TramoEdad" Width="15" />-->
                <mic:DataGridCheckBoxColumn Binding="{Binding CFG_CAT_FAR_TramoEdad_Modificable}" Header="Modificable" SortMemberPath="CFG_CAT_FAR_TramoEdad" Width="80" MaxWidth="100" MinWidth="100" />
                <mic:DataGridCheckBoxColumn Binding="{Binding CFG_CAT_FAR_TramoEdad_Activo}" Header="Activo" SortMemberPath="CFG_CAT_FAR_TramoEdad" Width="80" MaxWidth="100" MinWidth="100" />
                <!--<mic:DataGridTextColumn Binding ="{Binding CFG_CAT_FAR_TramoEdad_UsuarioAlta}" Header="Usuario alta" SortDirection="Ascending" SortMemberPath="CFG_CAT_FAR_TramoEdad" Width="125"/>-->

                <!--<mic:DataGridTextColumn Binding ="{Binding CFG_CAT_FAR_TramoEdad_UsuarioModificable}" Header="Usuario modificación" SortDirection="Ascending" SortMemberPath="CFG_CAT_FAR_TramoEdad" Width="125"/>-->
            </my:WpfDataGrid.Columns>
        </my:WpfDataGrid>
    </Grid>

</Page>

Ответы [ 2 ]

0 голосов
/ 14 октября 2011

Я предполагаю, что английский не является вашим основным языком, но неясно, что вы хотите.Вы можете назначить ширину конвертеру и вычислить ширину там.

0 голосов
/ 14 октября 2011

Если я вас правильно понимаю, вы хотите, чтобы ширина вашего столбца всегда занимала достаточно места для отображения каждого отдельного элемента в этом столбце, а не для растяжения и заполнения всей области.

Это проблемапотому что по умолчанию DataGrid Virtualized, поэтому невидимые элементы не загружаются, пока вы не прокрутите их.

Вы можете либо

  • установить значение DataGridColumnWidth равным *занимает все оставшееся пространство
  • Отключить виртуализацию (не рекомендуется по соображениям производительности)
  • Подключите что-то в загруженном событии вашей DataGrid, которое оценивает содержимое каждого элемента в этом столбце, вычисляет ширину визуализациииз них и устанавливает ширину столбца, равную наибольшему числу (также не очень рекомендуется из-за начального времени загрузки)
...