2012-10-17 31 views
15

Bir WPF uygulamasını VMware altında çalışan bir Windows 8 örneğine (x64) aktarırken, tüm popup'ların olması gerekenin aksine yanlış hizalanmış olduğunu fark ettim. Daha ileri araştırmalar, bunun yeni oluşturulmuş bir proje için bile ortak bir “problem” olduğunu ortaya koymaktadır. WPF'nin popup kontrolü, sol ve sağın anlamını değiştirmiş gibi görünüyor! ,pencereler 8 açılır pencere konumu

<Grid Background="Gray"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="129*"/> 
     <ColumnDefinition Width="264*"/> 
     <ColumnDefinition Width="124*"/> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="30"/> 
     <RowDefinition Height="30"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <DockPanel Grid.Row="1" Grid.Column="1" Background="LightGray"> 
     <Popup StaysOpen="True" IsOpen="True" Grid.RowSpan="2" Placement="Right" AllowsTransparency="True" > 
      <TextBlock Text="Right" Foreground="White" /> 
     </Popup> 
     <Popup StaysOpen="True" IsOpen="True" Grid.RowSpan="2" Placement="Left" AllowsTransparency="True" > 
      <TextBlock Text="Left" Foreground="White" /> 
     </Popup> 
     <Popup StaysOpen="True" IsOpen="True" Grid.RowSpan="2" Placement="Top" AllowsTransparency="True" > 
      <TextBlock Text="Top" Foreground="White" /> 
     </Popup> 
     <Popup StaysOpen="True" IsOpen="True" Grid.RowSpan="2" Placement="Bottom" AllowsTransparency="True" > 
      <TextBlock Text="Bottom" Foreground="White" /> 
     </Popup> 
    </DockPanel> 
</Grid> 

aslında sağ ve tersi görüntülenen solda görüntülenir olması gerekiyordu pop-up: Sorun 2012 vs kullanarak bir WPF uygulaması oluşturarak gösteri olacağını ve benzeri, içinde bazı pop-up koyabilirsiniz sol altta olması gereken, sağ altta vb. görüntüleniyor.

Sorum şu ki: 1) Bu bir hata mı yoksa özellik mi? 2) bir özellik ise, Windows 7 ve Windows 8 içinde aynı şekilde gerçekleştirmek için kodlarda minimun değişiklikler yapmak nasıl?

+0

Sadece Xaml'ınızı çalıştırdığınız ortamın aynısına kopyalayın, doğru yerdeki popup'larla doğru şekilde çalıştı –

+0

Bu benim durumumdan farklı, değil mi? Windows 8'in yayın sürümünü mi kullanıyorsunuz? Windows 8'in Geliştirici Önizlemesi veya Tüketici Önizleme sürümleri altında aynı uygulamayı çalıştırmayı denediğimde böyle bir sorun olmadığımı hatırlıyorum. –

+0

VMware Player –

cevap

17

Daha fazla araştırma, Kontrol Paneli'nin içinde bir ayar olduğunu gösterir: ControlPanel-> Donanım ve Ses-> Tablet PC (Windows 8'in ingilizce olmayan bir sürümünü kullandığım için düğüm adı tam olarak eşleşmeyebilir). Kullanıcının yazmayı tercih ettiği el için bir ayar vardır.

".net framework" kılavuzuna göre, "pop-up'ı" doğru pozisyonda "(yukarıdaki çözümü kullanmadan) yerleştirebilmesi için" Sol elle yazmayı tercih ederim "seçeneğini seçmeliyim. Bu varsayım, en azından destop uygulamaları için hiç de doğru olamaz!

+1

Bu ipucu muhtemelen beni saatlerce araştırıyordu. –

+1

Bana bir saatlik araştırma kaydettiniz. Teşekkürler! – TcKs

+0

Cidden ... Şimdi sadece 2 saatliğine yaptım ... bu çok daha fazla zaman kazandı. Bu nedenle stackoverflow'u seviyorum! – TravisWhidden

4

Buna hızlı bir çözüm yazdık ve kodu daha önce gönderdiğim başka bir SO parçasında yayınladık. Bu düzeltme, konum sorununu uygulamanızdan tümüyle birlikte kaldıracaktır, eğer istediğinizi buysa.

Popup Position with Handedness change

Umut bu kimse yardımcı olur!

İlgili konular