Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf windows 8弹出窗口位置_Wpf_Windows 8 - Fatal编程技术网

Wpf windows 8弹出窗口位置

Wpf windows 8弹出窗口位置,wpf,windows-8,Wpf,Windows 8,在将WPF应用程序移植到运行在VMware下的Windows 8实例(x64)时,我发现所有弹出窗口都与它们应该的位置不一致。进一步的调查显示,即使对于新创建的项目,这也是一个常见的“问题”。WPF的弹出控件似乎改变了“左”和“右”的含义!可以通过使用vs 2012创建wpf应用程序并在其中放置一些弹出窗口来显示问题,如: <Grid Background="Gray"> <Grid.ColumnDefinitions> <ColumnDef

在将WPF应用程序移植到运行在VMware下的Windows 8实例(x64)时,我发现所有弹出窗口都与它们应该的位置不一致。进一步的调查显示,即使对于新创建的项目,这也是一个常见的“问题”。WPF的弹出控件似乎改变了“左”和“右”的含义!可以通过使用vs 2012创建wpf应用程序并在其中放置一些弹出窗口来显示问题,如:

<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>

应该显示在左侧的弹出窗口实际上显示在右侧,反之亦然,应该显示在左下角的弹出窗口显示在右下角,等等


我的问题是:1)这是一个bug还是一个特性?2) 如果这是一项功能,如何对代码进行最小更改,使其在Windows 7和Windows 8中以相同的方式运行?

进一步调查表明,控制面板中有一个设置: 控制面板->硬件和声音->平板电脑(节点名称可能不完全匹配,因为我使用的是非英语版本的Windows 8)。有一个用户喜欢使用的手写设置


根据.net framework手册,必须选择“我更喜欢用左手书写”,以便将弹出窗口放置在“右侧位置”(不使用上述解决方案)。至少对于destop应用程序来说,这种假设根本不正确

只是将您的Xaml复制到您正在运行的完全相同的环境中,它在正确的位置正确地使用弹出窗口,这与我的情况不同,不是吗。您正在运行Windows 8的发行版吗?我记得当我尝试在Windows 8的开发者预览版或消费者预览版下运行同一应用程序时,似乎没有出现这样的问题。我正在VMware PlayerThanks中运行发行版。我下面的“解决方案”也与您的不同,对吗?是的,我已将FlowDirection设置为LeftToRight此提示可能为我节省了数小时的调查时间。您为我节省了数小时的调查时间。谢谢认真地我现在只投入了2个小时。。。这节省了更多的时间。我爱stackoverflow就是因为这个原因!