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

C# .NET .NET (C# a Visual Basic) WPF - bug zaoblení borderu při změně velikosti American English version English version

Avatar
Honza
Člen
Avatar
Honza:

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. března 9:38
Odpovědět 21. března 9:36
Snadnou cestou se daleko nedostanete, je tam velká tlačenice...
Avatar
Odpovídá na Honza
sadlomaslox25:

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

 
Nahoru Odpovědět 21. března 9:58
Avatar
Honza
Člen
Avatar
Honza:

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. března 10:42
Nahoru Odpovědět 21. března 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.