2017-05-25 56 views
7

Mam DevExpress GridControl, który ma 7 kolumn. Próbowałem rozwinąć ostatnią kolumnę w prawo, ale nic się nie dzieje. Zamiast tego kolumna rozciąga się na pewną odległość, a na prawej krawędzi siatki znajduje się pusta kolumna bez nazwy, której nie można rozciągnąć.Jak wypełnić szerokość ostatniej kolumny w DevExpress GridControl?

Próbuję google go: Znajduję odpowiedzi takie jak this, ale to nie działa dla mnie.

Oto trochę spokoju XAML, usuwam wszystkie wiązania.

<dxg:GridControl Grid.Row="0" 
       x:Name="dgGrid" 
       VerticalAlignment="Stretch" 
       HorizontalAlignment="Stretch" 
       dx:ThemeManager.ThemeName="Seven" 

       ScrollViewer.CanContentScroll="True" 
       ScrollViewer.HorizontalScrollBarVisibility="Auto" 
       ScrollViewer.VerticalScrollBarVisibility="Auto" 
       > 

    <dxg:GridControl.View> 
     <!--region #RowCellMenuCustomization--> 
     <dxg:TableView x:Name="view" AutoWidth="True" NavigationStyle="Cell"> 
      <dxg:TableView.RowCellMenuCustomizations> 
       <dxb:BarButtonItem Content="Link" 
           ItemClick="CellDataItem_Link_ItemClick" 
           ></dxb:BarButtonItem> 

       <dxb:BarButtonItem Content="UnLink" 
           ItemClick="CellDataItem_UnLink_ItemClick" 
           ></dxb:BarButtonItem> 
      </dxg:TableView.RowCellMenuCustomizations> 
     </dxg:TableView> 
     <!--endregion #RowCellMenuCustomization--> 
    </dxg:GridControl.View> 

    <dxg:GridControl.Columns> 

     <dxg:GridColumn Header="Column0" 
        AllowEditing="False" 
        HorizontalHeaderContentAlignment="Stretch" 
        FixedWidth="True" 
        AllowResizing="True" 
        MinWidth="80" 
        ></dxg:GridColumn> 

     <dxg:GridColumn Header="Column1" 
        AllowEditing="False" 
        HorizontalHeaderContentAlignment="Stretch" 
        FixedWidth="True" 
        AllowResizing="True" 
        MinWidth="80" 
        ></dxg:GridColumn> 

     <dxg:GridColumn Header="Column2" 
        AllowEditing="False" 
        HorizontalHeaderContentAlignment="Stretch" 
        AllowResizing="True" 
        FixedWidth="True" 
        Visible="False" 
        MinWidth="80" 
        ></dxg:GridColumn> 

     <dxg:GridColumn Header="Column3" 
        HorizontalHeaderContentAlignment="Center" 
        AllowEditing="False" 
        Width="35" 
        FixedWidth="True" 
        AllowResizing="False" 
        ></dxg:GridColumn> 

     <dxg:GridColumn Header="Column4" 
        HorizontalHeaderContentAlignment="Center" 
        FixedWidth="True" 
        AllowEditing="False" 
        AllowResizing="False" 
        Width="35" 
        ></dxg:GridColumn> 

     <dxg:GridColumn Header="Column5" 
        HorizontalHeaderContentAlignment="Stretch" 
        FixedWidth="True" 
        AllowEditing="False" 
        AllowResizing="True" 
        MinWidth="170" 
        ></dxg:GridColumn> 

     <dxg:GridColumn Header="Column6" 
        HorizontalHeaderContentAlignment="Stretch" 
        AllowEditing="False" 
        AllowResizing="True" 
        Width="*" 
        Fixed="None" 
        BestFitMode="Default" 
        BestFitArea="All" 
        MinWidth="130" 
        FixedWidth="False" 
        /> 

    </dxg:GridControl.Columns> 
</dxg:GridControl> 

Here example of my GridControl

Jednocześnie używam BestFit metodę, która działa gdy GridControl załadowany:

private void Grid_Loaded(object sender, RoutedEventArgs e) 
{ 
    ((TableView)this.view).BestFitArea = BestFitArea.All; 
    var visibleColumns = ((TableView)this.view).VisibleColumns; 
    ((TableView)this.view).BestFitColumns(); 
} 

Proszę, możesz mi pomóc, aby dopasować ostatnią kolumnę (Column6) szerokość do koniec siatki?

+0

Czy istnieje właściwość zależności autogenerateColumns? Jeśli tak jest, możesz ustawić opcję To na false i sprawdzić. –

+0

@AbhinavSharma, bo, nie używam żadnej właściwości AutogenerateColumns. Moje imiona nie przypominają kolumny "Kolumna0", to jest jak: Imię, Miasto i tak dalej. –

Odpowiedz

6

TableView.AutoWidth właściwość jest tym, czego szukasz. Już ją ustawiłeś, ale w Twoim Column6 jest błąd. Kolumny Width nie można ustawić na "*". Więc użyłem kodu, usunięto Width="*" i oto wynik:

Result

2

W rzeczywistości, jeśli używasz 16.1 lub nowszej wersji, ustawienie „*” jako szerokość kolumny powinny działać poprawnie . Stworzyłem projekt testowy oparty na kodzie i snippet: enter image description here

Zastosowanie „*” w nieruchomości GridColumn.Width umożliwia proporcjonalnego kolumnę zaklejania funkcję, jednak nie jest dostępny w starych wersjach. Aby dowiedzieć się więcej o tej funkcji, zapoznaj się z Columns Layout and Width.

Jeśli masz starszą wersję, włącz opcję AutoWidth.

+0

Mam wersję 16.2 –

+0

@Admiral Land, stworzyłem projekt testowy oparty na twoim opisie i wydaje się, że ostatnia kolumna jest prawidłowo rozciągnięta. To dziwne, że ten kod nie działa po twojej stronie. –

Powiązane problemy