Avatar
Petr Nymsa
Redaktor
Avatar
Petr Nymsa:

Zdravíčko :D. Mám opět problémek. Mám v Border ListView které zobrazuje historii hraní. Border má nastavený Padding 20. ListView funguje pouze v Simulatoru a to na jakémkoliv rozlišení - od 1024x768 až po 1920x1080. Border je vycentrován na střed obrazovky s tím že má Margin s Top a Bottom nastavený na 50. Pokud itemy v ListView přetečou objeví se ScrollBar a můžu skrolovat.

Mě z neznámého důvodu na klasické obrazovce, tedy ne v simulatoru, ale klasicky puštěným režimu ScrollBar nefunguje (viz. obrázek)

Kód XAML kde mám border a ListView.

<Border x:Name="borderHistory" Padding="20"  HorizontalAlignment="Center" Background="#B2151515" CornerRadius="25" VerticalAlignment="Center" Margin="0,50" >
                  <ListView HorizontalAlignment="Center" ItemsSource="{Binding HistoryList}"
                            ItemTemplate="{StaticResource listTemplate}" Width="200" SelectionMode="None"
                            IsHitTestVisible="True" ScrollViewer.VerticalScrollMode="Enabled" ScrollViewer.VerticalScrollBarVisibility="Visible" >
                      <ListView.HeaderTemplate>
                          <DataTemplate>
                              <TextBlock Text="History" FontFamily="Ravie" FontSize="25" >
                                  <TextBlock.Foreground>
                                      <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                          <LinearGradientBrush.RelativeTransform>
                                              <CompositeTransform CenterY="0.5" CenterX="0.5" Rotation="-109.654"/>
                                          </LinearGradientBrush.RelativeTransform>
                                          <GradientStop Color="#FFFFDC00"/>
                                          <GradientStop Color="#FFDA37D3" Offset="1"/>
                                          <GradientStop Color="#FF80FF00" Offset="0.298"/>
                                          <GradientStop Color="#FF00FFF3" Offset="0.638"/>
                                      </LinearGradientBrush>
                                  </TextBlock.Foreground>
                              </TextBlock>
                          </DataTemplate>
                      </ListView.HeaderTemplate>
                  </ListView>
          </Border>

V jiné aplikaci používám stejný způsob a tam mi to funguje. TAdy na to koukám a koukám a nevím proč.

Celý Border je vložen do hlavní Gridy, která má 3 sloupečky. A to takto.

<Grid.ColumnDefinitions>
              <ColumnDefinition Width="*" />
              <ColumnDefinition Width="Auto" />
              <ColumnDefinition Width="*" />
          </Grid.ColumnDefinitions>

Nevídíte někdo problém ? Díky :)

Odpovědět 1.6.2013 13:21
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Petr Nymsa
Redaktor
Avatar
Petr Nymsa:

Ještě doplním info. Na 10.6" palců s FullHD scrol funguje. Na 23" už ne. Problém je ve výšce toho ListView / Borderu. Když zadaám výšku na pevno, třeba 250px, vše funguje.

Potřebuju ale aby se to vždy roztáhlo na celou výšku s tím že od shora a od spoda to bude mít 50px odsazení.

//EDIT

Dobře, zbytečně spamuju :[ Stačilo si ohlídat změnu rozlišení a nastavit ListView výšku Borderu - 2*odsazení.

Editováno 1.6.2013 13:31
Nahoru Odpovědět 1.6.2013 13:28
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
matesax
Redaktor
Avatar
Odpovídá na Petr Nymsa
matesax:

Zde to funguje tak, že když nezadáš výšku, nebo šířku, použije se maximální dosažitelná...

 
Nahoru Odpovědět 1.6.2013 13:37
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na matesax
Petr Nymsa:

To ano, ale proč poté nefunguje Scroll. Kódem jsem vlastně také nastavil maximáolní dosažitelnou.

Díky Marginu jsem řekl že výška bude výška nadřazeného Gridu - Ten nastavený Margin

Nahoru Odpovědět 1.6.2013 14:10
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Odpovídá na Petr Nymsa
Michal Žůrek (misaz):

a není tam nějaké owerflow?

Když sem pro to dělal v HTML, tak mi šlo vše pěkně a neřešil jsem s alyoutem jediný problém.

Nahoru Odpovědět 1.6.2013 14:12
Nesnáším {}, proto se jim vyhýbám.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
Petr Nymsa:

Ne overflow v XAML není. Říkám jinde mi to funguje v pohodě :) A tady jsem to tedy vyřešil dopočítám výšky.

Nahoru Odpovědět 1.6.2013 14:15
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
matesax
Redaktor
Avatar
Odpovídá na Petr Nymsa
matesax:

Zkus nic nezadat a uvidíš...

 
Nahoru Odpovědět 1.6.2013 14:17
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na matesax
Petr Nymsa:

V XAML dělám už delší dobu, takže vím že Border a i ListView se roztáhne na maximální možnou výšku, ListView bez zadání šířky i na max. možnou šířku. Ovlivnit to lze Marginem + Paddingem.

Nahoru Odpovědět 1.6.2013 14:19
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na matesax
Petr Nymsa:

Dobře, nefunguje to úplně korektně. Při zapnutí se to nastaví správně. Při navigaci na jinou stránku a zpět se border zmenší asi na 40px.

Výšku jsem nastavil takto

this.listHistory.Height = borderHistory.ActualHeight - 40;
Nahoru Odpovědět 1.6.2013 15:07
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
matesax
Redaktor
Avatar
Odpovídá na Petr Nymsa
matesax:

Hoď celou aplikaci... :)

 
Nahoru Odpovědět 1.6.2013 15:10
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na matesax
Petr Nymsa:

Dobrý, nakonec jsem nastavil pevnou výšku a vypadá to i tak dobře. Tlačí mě čas, takže už to řešit nebudu. Neheldě na to že nyní to Microsoftu nějak trvá schvalovat aplikace. Díky :)

Nahoru Odpovědět 1.6.2013 15:30
Pokrok nezastavíš, neusni a jdi s ním vpřed
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 11 zpráv z 11.