Diskuze: WPF - text přes celou buňku

C# .NET .NET (C# a Visual Basic) WPF - text přes celou buňku American English version English version

Avatar
Adam Ježek
Tým ITnetwork
Avatar
Adam Ježek:

Zdarec,
nevíte jak ve WPF udělat, aby text v TextBlock/Label/But­ton byl roztažen přes celou buňku v Gridu(a samozřejmě ji zabíral celou i po změně velikosti okna)?
Díky.

Odpovědět 9.3.2015 15:18
Pokud chceš odpovědět, klikni na odpovědět. Pokud chceš vložit zdroják, klikni na vložit zdroják (</>)
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Adam Ježek
Petr Nymsa:

HorizontalAlig­nment="Stretch" by mohlo pomoct

Nahoru Odpovědět 9.3.2015 15:45
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Odpovídá na Adam Ježek
Petr Čech (czubehead):

Nejdříve odychtíš všechny události, při kterých se mění velikost. Potom budeš mít metodu, která bude měnit velikost fontu tak, aby se tam ten text přesně vešel. Asi takhle

double fs;
for (fs = 0.1; true; fs += 0.1)
{
        FormattedText ftext =
        new FormattedText(stretchTbx.Text, CultureInfo.InvariantCulture,
                FlowDirection.LeftToRight,
                new Typeface("Sergoe UI"), fs, Brushes.Black);

        if (ftext.Height >= vyskaBunky || ftext.Width >= sirkaBunky)
                break;
}
stretchTbx.FontSize = fs-0.1;

No a tuto metodu spustíš vždy, když chceš měnit velikost.

Nahoru Odpovědět  -1 9.3.2015 18:15
Why so serious? -Joker
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Adam Ježek
Jan Vargovský:

Já to vždycky narval do ViewBoxu.

 
Nahoru Odpovědět 9.3.2015 19:20
Avatar
Adam Ježek
Tým ITnetwork
Avatar
Adam Ježek:

Petr Nymsa Bohužel nic
Petr Čech (czubehead) Tohle mi příde jako blbost, při každý změně okna měnit velikost fontu...

Jan Vargovský Díky, jedinné co funguje, jen zatímco Grid se roztáhne po celym a mam možnost nějakou kontrolku natáhnou na zbytek okna, tak viewbox si tu kontrolku nechá malou a zůstane neroztaženej. Ať dělam co dělam, tak se mi nedaří ten DataGrid roztáhnout na zbytek formuláře.
V tý první fotce je to ve viewboxu, text se roztahuje jak potřebuju, ale ten DataGrid zůstane malej. Chtěl bych ho roztáhnout jako je na druhý fotce(tam neni viewbox, takže se text neroztahuje), ale to se mi vůbec nedaří. Nevěděl bys jak na to?
Dík.

XAML:

<Window
        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" mc:Ignorable="d" x:Class="packingControlGUI.MainWindow"
        Title="PackingControl" Height="800" Width="450">
  <Viewbox  HorizontalAlignment="Center" VerticalAlignment="Top" >
        <Grid Margin="5" HorizontalAlignment="Stretch">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="2*"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="0.05*" />
                <RowDefinition Height="0.05*" />
                <RowDefinition Height="0.05*" />
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>


            <TextBlock Grid.Row="0" Grid.Column="0" >Operátor</TextBlock>
            <TextBlock Grid.Row="1" Grid.Column="0" >Bedna</TextBlock>
            <TextBlock Grid.Row="2" Grid.Column="0" >Stav</TextBlock>


            <Label Grid.Row="1" Grid.Column="1" Content="bedn"/>
            <Label Grid.Row="0" Grid.Column="1" Content="_oper"/>

            <Button Grid.Row="0" Grid.Column="2" Margin="3">Odhlásit</Button>
            <Button Grid.Row="0" Grid.Column="3" Margin="3" >Bedny</Button>
            <Button Grid.Row="1" Grid.Column="2" Margin="3">Aktualizovat</Button>
            <Button Grid.Row="1" Grid.Column="3" Margin="3">Vysypat</Button>


            <DataGrid Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="4"  Margin="10"/>


        </Grid>
  </Viewbox>
</Window>
Editováno 9.3.2015 19:33
Nahoru Odpovědět 9.3.2015 19:31
Pokud chceš odpovědět, klikni na odpovědět. Pokud chceš vložit zdroják, klikni na vložit zdroják (</>)
Avatar
Adam Ježek
Tým ITnetwork
Avatar
Odpovídá na Adam Ježek
Adam Ježek:

prostě se tam ty fotky nevloží...

Nahoru Odpovědět 9.3.2015 19:31
Pokud chceš odpovědět, klikni na odpovědět. Pokud chceš vložit zdroják, klikni na vložit zdroják (</>)
Avatar
Jan Vargovský
Redaktor
Avatar
Jan Vargovský:

No naházej jednotlivé textblocky do viewboxu :) on ti prostě vezme content a roztáhne ho.

EDIT: Ofc, je to trošku dementní a XAML se ti trošku natáhne :D ale je to asi nejjednodušší řešení.

Editováno 9.3.2015 19:52
 
Nahoru Odpovědět 9.3.2015 19:50
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Adam Ježek
Petr Nymsa:

Ještě zkus dát taky nadřazenému elementu HorizontalConen­tAlignment na Stretch. MNedělalo mi to problém a ViewBox jsem nepotřeboval :)

Nahoru Odpovědět 9.3.2015 19:59
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Adam Ježek
Tým ITnetwork
Avatar
Odpovídá na Petr Nymsa
Adam Ježek:

Hází mi to chybu, existuje vůbec ta vlastnost? Ani našeptávač ji nezná. (a jestli to mělo být content, tak ten taky neni)
//tak tam sice je, ale funguje jen v tom textblocku, v nadřazeném elemtu nikoliv, a nic to nedělá

Editováno 9.3.2015 20:15
Nahoru Odpovědět 9.3.2015 20:13
Pokud chceš odpovědět, klikni na odpovědět. Pokud chceš vložit zdroják, klikni na vložit zdroják (</>)
Avatar
Adam Ježek
Tým ITnetwork
Avatar
Odpovídá na Jan Vargovský
Adam Ježek:

tomu sem se chtěl vyhnout :D
každopádně jenom u těch tlačítek mi to dělá šířku dle délky nextu a nevyplní celou buňku, nepomůže ani

HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
Nahoru Odpovědět 9.3.2015 20:17
Pokud chceš odpovědět, klikni na odpovědět. Pokud chceš vložit zdroják, klikni na vložit zdroják (</>)
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.