NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: WPF - bug zaoblení borderu při změně velikosti

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Honza
Člen
Avatar
Honza:21.3.2016 9:36

Ahoj, narazil jsem na problém se zaoblením borderu při změně velikosti. Jde o to že jsem si napsal svoji template pro datagrid s tím, že má zaoblené rohy a to včetně hlavičky. Když zapnu aplikaci tak to vypadá ok. Pokud ale zvětším šířku aplikace a pak ji zase změním na původní velikost, tak zmizí zaoblení rohu (pouze jednoho a to pravého) a místo něj tam je standardní ostrý roh. Ve chvíli kdy aplikaci maximalizuji, tak je vše zase ok. Na přiložených obrázcích je to vidět. Na tom prvním je jak to je správně po spuštění aplikace a na druhém je ten bug po změně velikosti. Nesetkal jste se někdo s tím? Já nevidím jediný důvod proč by to nemělo fungovat, ale pokud to je nějaká chyba za kterou nemůžu, nejde to nějak obejít (např. někde zavolat layout panel popř. znovu nastavit správný radius)? Díky

Editováno 21.3.2016 9:38
Odpovědět
21.3.2016 9:36
Snadnou cestou se daleko nedostanete, je tam velká tlačenice...
Avatar
Odpovídá na Honza
sadlomaslox25:21.3.2016 9:58

muzes skusit UseLayoutRounding nebo SnapsToDevicePixels na rodici/borderu. treba to pomuze. jinak sem hod kod.

 
Nahoru Odpovědět
21.3.2016 9:58
Avatar
Honza
Člen
Avatar
Honza:21.3.2016 10:41

Tak jsem to nakonec vyřešil tak, že jsem trochu překopal šablonu a už to funguje.
Jen pro zajímavost, kritická část která dělala problém vypadala nějak takto:

<Grid>
    <Border Background="LightGray" Padding="2,12,2,8" CornerRadius="14,14,0,0" BorderBrush="Transparent" BorderThickness="0">
        <ContentPresenter HorizontalAlignment="Center" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
    </Border>

    <Thumb x:Name="PART_LeftHeaderGripper" HorizontalAlignment="Left"   Background="Transparent" Margin="0,0,0,0" Width="5"/>
    <Thumb x:Name="PART_RightHeaderGripper" HorizontalAlignment="Right" Background="Gray" Margin="0,12,0,0" Width="1" />
</Grid>

Zajímavý poznatek je, že pokud u toho vnějšího gridu nastavím nějakou barvu pozadí, tak sice přečnívá ten grid, ale border se zaobluje správně. S barvou pozadí nastavenou na Transparent to však nefunguje. Nakonec jsem to tedy vyřešil předěláním šablony, každopádně díky za reakci.

Editováno 21.3.2016 10:42
Nahoru Odpovědět
21.3.2016 10:41
Snadnou cestou se daleko nedostanete, je tam velká tlačenice...
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 3 zpráv z 3.