2011-10-14 56 views
0

我有這個WpfDatagrid,我需要一個確切的寬度列,我有一個問題。WpfDatagridColumn的寬度故障

我需要列「代碼」有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> 
+0

需要查看DataGrid周圍的XAML。如何將DataGrid放置在窗口上。大小問題可能始於整個DataGrid的大小。 – Paparazzi

+0

我使用完整代碼頁編輯答案 – Jorgechu

+1

您是否嘗試設置Width =「*」而不是Width =「Auto」? – hyp

回答

0

我假設英語不是你的主要語言,但它不清楚你想要什麼。您可以將寬度分配給轉換器並計算寬度。

0

如果我理解你的權利,你希望你的列的寬度總是佔用足夠空間來顯示該列中的每個項目,但不能擴展和填充整個區域。

這是一個問題,因爲默認情況下DataGrid的是Virtualized,所以不可見的項目纔會加載,直到您滾動到它們。

您可以

  • 設置你的DataGridColumnWidth等於*所以它佔用所有剩餘空間
  • 禁用虛擬化(不推薦,由於性能原因)
  • 胡克在DataGrid的加載事件東西評估該列中每個項目的內容,計算它們的渲染寬度,並將列的寬度設置爲最高數量(由於初始加載時間,也不是真正推薦的)
+0

謝謝,但我不解決問題:(。 – Jorgechu