Kamera uygulamasında fotoğraf şeridine çok benzer bir efekt yaratan bir dizi sorunla karşılaşıyorum. Tüm yapmak istediğim, her biri ekranla aynı boyutlara sahip olan (dikey veya yatay) bir dizi ızgara görüntülemektir. Zaten, en boy oranını korumak için hacky ve create dependency properties that the grids width and height properties bind to bir şey yapmak zorunda kaldı.WP7'de kamera uygulaması stili fotoğraf şeridi nasıl uygulanır?
Ve bu iyi çalışıyor. Ama benim stripim için bir StackPanel oluşturduğumda ve navigasyonumu uygularken (veya z-index dönüşümü ile geriye zum yaptıktan sonra), StackPanel'in ekran boyutlarından daha büyük görüntülenemeyeceğini görüyorum (sadece bir kılavuzun boyutuna kırpılmış) . Bu sorunu açıklayan bir yazı buldum sanıyordum ama şimdi bulamıyorum - lütfen düşündüğüm hangi gönderiyi biliyorsanız veya bu sınırlama hakkında daha fazla bilgi sahibiseniz lütfen yayınlayın.
Bulduğum tek çözüm ScrollViewer kullanmaktır, ki bu kesinlikle istediğim davranış değildir, ancak StackPanel'in ekrandan daha geniş olmasını sağlar.
Benim asıl sorun ScrollViewer davranışı ile ilgilidir - çünkü serbestçe kaydırmak yerine ızgaradan ızgaraya (fotoğraf şeridinin yaptığı gibi) atlama yapmam gerekiyor ve HorizontalOffset'in animatable özelliği olmadığını söyleyebilirim. ScrollToHorizontalOffset'i her 15 milisaniyede çağırarak, temel olarak kendi hareketlendirme efektimi manuel olarak uygulayarak onu canlandırabilirim. Bu büyük bir kesmek gibi görünüyor ve davranış çok glitchy (ya da her kaydırma eyleminin sonunda her zaman beklemeden ManipulationCompleted olayı almıyorum - veya ScrollViewer inertia fiziği yerleşik benim etkisi ile müdahale ediyor).
Çalıştığım sorunlar için daha iyi çözümler veya Silverlight'taki Fotoğraf Makinesi şeridinin deneyimini elde etmek için tamamen farklı bir yol bilen var mı?
Pivot denetimini kullanmayı düşündüm, ancak tam olarak istediğim şey değil (eğer her bir öğe bir şeritte eklenecek gibi görünmek yerine, bir sonraki öğeden önce tümüyle animasyonlu hale getirilseydi Bunu başarmak için daha az kısıtlayıcı yollar olmalıdır. Daha da önemlisi, şerit dinamik olarak yapabileceğim birçok etkiden sadece biri. Alternatif olarak CoolIris benzeri bir 3d eğim veya bir FlipPad stili sayfa dönüşü yapmak isterim. Mevcut kurulumumu güzelce halledebilirsem, bu diğer efektleri (uygulanabilir geçişler) uygulamak kolay olurdu. Pivot gibi bir kontrole bağlı olmak bana bu vizyona daha fazla yaklaşmayacak. Sadece kullanıcı ve manuel konum onun doğrudan manipüle görmesini ScrollViewer önlemek eğer
<Grid x:Name="LayoutRoot" Background="Transparent" Height="{Binding RealHeight, ElementName=phoneApplicationPage}" Width="{Binding RealWidth, ElementName=phoneApplicationPage}" HorizontalAlignment="Left" VerticalAlignment="Top">
<ScrollViewer x:Name="SlideScroller" VerticalScrollBarVisibility="Disabled" Height="{Binding RealHeight, ElementName=phoneApplicationPage}" Margin="0,0,0,-31" ScrollViewer.HorizontalScrollBarVisibility="Auto" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel x:Name="SlidePanel" Orientation="Horizontal" Height="{Binding RealHeight, ElementName=phoneApplicationPage}" VerticalAlignment="Top" HorizontalAlignment="Left">
<Grid x:Name="Slide0" Margin="0" VerticalAlignment="Top" HorizontalAlignment="Left" Width="{Binding RealWidth, ElementName=phoneApplicationPage}" Height="{Binding RealHeight, ElementName=phoneApplicationPage}" Background="#FFCCCCCC">
<Image x:Name="Photo0" Width="{Binding RealWidth, ElementName=phoneApplicationPage}" Height="{Binding RealHeight, ElementName=phoneApplicationPage}" VerticalAlignment="Top" HorizontalAlignment="Left" Stretch="UniformToFill"/>
</Grid>
<Grid x:Name="Slide1" Margin="0" VerticalAlignment="Top" HorizontalAlignment="Left" Width="{Binding RealWidth, ElementName=phoneApplicationPage}" Height="{Binding RealHeight, ElementName=phoneApplicationPage}" Background="#FFCCCCCC">
<Image x:Name="Photo1" Width="{Binding RealWidth, ElementName=phoneApplicationPage}" Height="{Binding RealHeight, ElementName=phoneApplicationPage}" VerticalAlignment="Top" HorizontalAlignment="Left" Stretch="UniformToFill"/>
</Grid>
<Grid x:Name="Slide2" Margin="0" VerticalAlignment="Top" HorizontalAlignment="Left" Width="{Binding RealWidth, ElementName=phoneApplicationPage}" Height="{Binding RealHeight, ElementName=phoneApplicationPage}" Background="#FFCCCCCC">
<Image x:Name="Photo2" Width="{Binding RealWidth, ElementName=phoneApplicationPage}" Height="{Binding RealHeight, ElementName=phoneApplicationPage}" VerticalAlignment="Top" HorizontalAlignment="Left" Stretch="UniformToFill"/>
</Grid>
</StackPanel>
</ScrollViewer>
</Grid>
Sola veya sağa hareket ettirdiğinizde içeriği (ör. Image source özelliği) değiştirmeyi düşündünüz mü? Çok daha basit. –
Pek sayılmaz - bu sadece pes etmiyor ve ben gerçekten bu kadar uzakta değilim. – Subcreation