myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: WPF und XAML » Datagrid -stretched column
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Datagrid -stretched column

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Hydrogencarbonat Hydrogencarbonat ist männlich
myCSharp.de-Mitglied

Dabei seit: 24.05.2018
Beiträge: 40


Hydrogencarbonat ist offline

Datagrid -stretched column

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hey,
mein datagrid ist horizontal aligment = "stretch".
wie kann man die letzte Spalte von einem Datagrid stretch machen, so dass diese Spalte bis zum Ende des datagrid geht?

1.hier hat die letzte Spalte anscheinend einen festen Wert und das letzte Stück wird nicht gestretched.
||-----||-----||-----||-----||-----| |
| |
| |
2.die letzte Spalte soll bis zum Ende vom datagrid gehen
||-----||-----||-----||-----||----> |
| |
| |
3. so soll es aussehen
||-----||-----||-----||-----||---------------- ||
| |
| |

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Hydrogencarbonat am 10.01.2020 12:30.

10.01.2020 10:58 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.584
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

10.01.2020 11:04 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Hydrogencarbonat Hydrogencarbonat ist männlich
myCSharp.de-Mitglied

Dabei seit: 24.05.2018
Beiträge: 40

Themenstarter Thema begonnen von Hydrogencarbonat

Hydrogencarbonat ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

ich habe es mit * probiert.
Es klappt abe rirgendwie nicht.
Hier ein kleines Beispiel:

XML-Code:
<Window x:Class="datagrid_simple.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:datagrid_simple"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="300"
>
    <ScrollViewer  VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"
                   PanningMode="VerticalOnly" MinWidth="300" MinHeight="500"
>
        <Grid   >
            <Grid.Resources>
                <ResourceDictionary>
                    <ResourceDictionary.MergedDictionaries>
                    </ResourceDictionary.MergedDictionaries>
                </ResourceDictionary>
            </Grid.Resources>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <Border Grid.Row="1" BorderBrush="Green" Margin="10" BorderThickness="1" CornerRadius="3">
                <Grid Visibility="Visible" Background="WhiteSmoke">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <DataGrid x:Name="grid1"
                             HorizontalAlignment="Stretch"
                             HorizontalContentAlignment="Stretch"
                             Margin="10"
                             VerticalAlignment="Center"
                             AlternatingRowBackground="WhiteSmoke"
                             AutoGenerateColumns="False"
>
                        <DataGrid.Columns>
                            <DataGridTextColumn Binding="{Binding Type}" Header="Name" CanUserResize="True"  Width="Auto"/>
                            <DataGridTextColumn Binding="{Binding Name}" Header="Type" CanUserResize="True"  Width="*"/>
                        </DataGrid.Columns>
                    </DataGrid>
                </Grid>
            </Border>
        </Grid>
    </ScrollViewer>
</Window>

C#-Code:
using System.Collections.Generic;
using System.Windows;

namespace datagrid_simple
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            List<User> users = new List<User>();
            users.Add(new User() { Id = 1, Type = "Schlange", Name = "Otto" });
            users.Add(new User() { Id = 2, Type = "Fisch", Name = "Walter" });
            users.Add(new User() { Id = 3, Type = "Alien", Name = "Peter" });

            grid1.ItemsSource = users;
        }
    }

    public class User
    {
        public int Id { get; set; }

        public string Type { get; set; }

        public string Name { get; set; }
    }
}
10.01.2020 11:56 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
witte
myCSharp.de-Mitglied

Dabei seit: 03.09.2010
Beiträge: 862


witte ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ein ScrollViewer gaukelt dem Datagrid eine unendliche Größe vor. => ScrollViewer entfernen.
10.01.2020 13:02 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Hydrogencarbonat Hydrogencarbonat ist männlich
myCSharp.de-Mitglied

Dabei seit: 24.05.2018
Beiträge: 40

Themenstarter Thema begonnen von Hydrogencarbonat

Hydrogencarbonat ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Super, vielen Dankes klappt.
Jedoch benutze ich in meinem richtigen Code ein Customize Datagrid.
Und da ist die Voreinstellung von MaxWidth festgelegt.
Dort wird die Spalte nicht gestretched, wenn ich Width="*" benutze.
Müsste ich um zu stretchen die Voreinstellung maxwidth zurücksetzen?
Was kann ich da tun?

In meinem kleinen Beispiel würde es wie folgt aussehen.

XML-Code:
  <DataGridTextColumn Binding="{Binding Name}" Header="Type" CanUserResize="True" MaxWidth="100"  Width="*"/>

.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Hydrogencarbonat am 10.01.2020 13:50.

10.01.2020 13:48 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.584
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Was erwartest du denn, wenn du MaxWidth setzt und gleichzeitig die Spalte gestretcht werden soll? Ich erwarte, daß die Spalte dann auf maximal diesen Wert vergrößert wird.
Oder ist bei dir die angezeigte Spalte kleiner als 100 Pixel?

Edit: Oder wolltest du eigentlich MinWidth (also die Mindestbreite) setzen?

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Th69 am 10.01.2020 14:19.

10.01.2020 14:16 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Hydrogencarbonat Hydrogencarbonat ist männlich
myCSharp.de-Mitglied

Dabei seit: 24.05.2018
Beiträge: 40

Themenstarter Thema begonnen von Hydrogencarbonat

Hydrogencarbonat ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,
ich verwende ein customize DataGridTextColumn "local:DataGridTextColumnCC " und in dem sind verschiedene Properties wie MinWidth, maxwidth etc schon voreingestellt.

Wenn ich nun die Width nachträglich auf * setze dann wurde im Vorfällt gesetzt und ich müsste davon bestimmte wieder zurück setzen. Ansonsten kann ja kein stretch erfolgen, da wie schon erwähnt die maxWidth gesetzt wurde.
Würde nur die MinWidh im vorfällt voreingestellt sein, dann hätte ich das problem ja nicht.

XML-Code:
<local:DataGridTextColumnCC Binding="{Binding Name}" Header="Type" CanUserResize="True"  Width="*"/>
10.01.2020 15:02 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.584
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Kannst du die MaxWidth denn nicht zusätzlich setzen?

XML-Code:
<local:DataGridTextColumnCC Binding="{Binding Name}" Header="Type" CanUserResize="True" MaxWidth="1000" Width="*"/>

Es sollte (laut Internet) auch so funktionieren (also wieder auf den Default-Wert +Inf setzen):

XML-Code:
MaxWidth="{x:Static Double.PositiveInfinity}"

(evtl. noch mit einem Prefix für den "System"-Namespace, s.a.  x:Static Markup Extension)

PS: "vorfällt" -> "Vorfeld" (s.a.  "Im Vorfeld": Ein Hauptfeld der Sprachverhunzer ;-)

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Th69 am 10.01.2020 15:33.

10.01.2020 15:29 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 4 Monate.
Der letzte Beitrag ist älter als 4 Monate.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 30.05.2020 22:59