Laden...

Grid mit einer Spalte fixiert und der Rest mit horizontalem scrollen

Erstellt von diego2k vor 13 Jahren Letzter Beitrag vor 13 Jahren 3.461 Views
D
diego2k Themenstarter:in
99 Beiträge seit 2008
vor 13 Jahren
Grid mit einer Spalte fixiert und der Rest mit horizontalem scrollen

Hallo,
ich brauche ein Grid das horizontales scrollen erlaubt, allerdings
möchte ich die erste Spalte Fixieren.
Also das die erste Spalte immer sichtbar ist,
egal wie weit man nach links scrollt.

Leider gibt mir google keine richtige Antwort, darum
nun hier meine Frage.

Danke!

3.430 Beiträge seit 2007
vor 13 Jahren

Hallo diego2k,

meinst du das DataGrid oder das Grid?
Beim DataGrid kannst du einfach FrozenColumnCount="1" setzen um die erste Spalte zu freezen und somit immer sichbar zu lassen.

Wenn du ein Grid meinst dann kannst du einfach zwei Spalten erstellen.
In der zweiten knallst du einen ScrollViewer dann hast du das gewünschte Ergebnis

Gruß
Michael

D
diego2k Themenstarter:in
99 Beiträge seit 2008
vor 13 Jahren

Nach rechts meinte ich natürlich ...

Danke werd ich gleich mal Probieren. 😃

Also ich bau grad sowas wie ein Gantt Diagramm, und da möchte ich natürlich in der
ersten Spalte ein paar Infos anzeigen ... Name etc.
und in die 2. Spalte kommt mein "Gantt-Row"-Controll der dann die Balken anzeigt.
Dh. die zweite Spalte wird sehr lange und auch wenn ich jetzt ganz nach hinten(rechts)
gescrollt habe, möchte ich immer noch den Namen etc. sehn....

D
diego2k Themenstarter:in
99 Beiträge seit 2008
vor 13 Jahren

So,
hatte nun Zeit zu gucken ...
Also ich meine hier "Grid" und ich will den Scrollviewer nicht für jede Zeile extra,
sondern einer für alle Zeilen.
Man kennt das aus Excel:
Ansicht - Fenster einfrieren - Erste Spalte einfrieren

danke

Nachtrag:
Ein Scrollviewer in der ColumnDefinition ist leider nicht erlaubt

D
diego2k Themenstarter:in
99 Beiträge seit 2008
vor 13 Jahren

ich hab nun etwas mit dem DataGrid probiert allerdings habe ich dort das Problem das mir
Controls in den Zellen nicht korrekt angezeigt werden.
D.h. sie werden mit erst dann angezeigt wenn ich doppelt auf die Zelle drauf klicke ...

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <DataGrid Height="Auto" Width="Auto" HorizontalAlignment="Stretch" Margin="12,21,12,12" AutoGenerateColumns="False" 
  Name="Gantt_Orientation" VerticalAlignment="Stretch" RowHeight="30"
                  HorizontalScrollBarVisibility="Visible" FrozenColumnCount="1"
VerticalScrollBarVisibility="Visible" HeadersVisibility="None" ItemsSource="{Binding}">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Bezeichnung" Binding="{Binding Path=name, ValidatesOnExceptions=True}" />
                <DataGridTextColumn Header="GanttRow" Binding="{Binding Path=ID, ValidatesOnExceptions=True}"/>
                <DataGridTemplateColumn >
                    <DataGridTemplateColumn.CellEditingTemplate>
                        <DataTemplate >
                            <ContentPresenter Content="{Binding Controls}"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellEditingTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>     
    </Grid>
</Window>
  public class Ding {
        public Ding() { }
        public Ding(String ID, String Name, StackPanel c) {
            this.ID = ID; this.name = Name; this.Controls = c;
        }
        public String ID { get; set; }
        public String name { get; set; }
        public StackPanel Controls { get; set; }
    }
    public partial class MainWindow : Window {
        public MainWindow() {
            InitializeComponent();
            Button but = new Button();
            but.Name = "Button";
            but.Background = Brushes.Red;
            but.Content = "mein text";
            TextBox b = new TextBox();
            b.Text = "Hallo";
            b.FontSize = 30;
            
            StackPanel st = new StackPanel();
           // st.Children.Add(b);
            st.Children.Add(but);

            List<Ding> ba = new List<Ding>();
            ba.Add(new Ding("11", "Name1", st));
            ba.Add(new Ding("12", "Name2", st));
            ba.Add(new Ding("13", "Name3", st));

            Hermskim_Gantt_Orientation_Transporter.DataContext = ba;

        }
    }
D
diego2k Themenstarter:in
99 Beiträge seit 2008
vor 13 Jahren

hab nicht ganz fertig gelesen 😃
natürlich CellTemplate und nicht editingTemplate