2016-12-13 189 views
0

我正在制作一个视频游戏,并且在这个级别上,我试图让它运行多个分辨率选项。在多个XAML文件之间切换

对于每一个可能的解决方案,这将是我在游戏中可用的,我做了一个独立的XAML文件,具有不同的高度,宽度,边距,字体大小,但相同的附件代码。

现在,我想允许用户选择的分辨率,因此每一个这样的选择,加载XAML文件。

例如在游戏的开始,我希望应用程序检查其分辨率为目前活跃。

我真的不能在这里提供一些特定的代码,我不知道该怎么做。我尝试添加xaml文件作为资源,但仍不明白如何选择其中一个作为活动。

喜欢的东西:

if (Resolution=="1600x900") 
{ 
// make resource file "res_1600_900.xaml" be active instead of MainWindow.xaml 
} 

当然,我可以在代码分配到文件夹中的文件,而不是资源,也没关系。

,如果有另一种方式来改变所有的大小和所有对象的位置一下子,我会很高兴听到这个消息。

谢谢 叶甫盖尼

UPD:复制XAML后我的错误消息,用户控件

错误4 'RealityIncognita.UserControl1' 不包含 'AnySoundEnd',没有扩展方法“的定义。 AnySoundEnd'接受类型'RealityIncognita.UserControl1'的第一个参数可以找到(你是否缺少using指令或程序集引用?)C:\ Users \ Evgenie \ Desktop \ Quest game \ RealityIncognita_0.7.4 \ RealityIncognita \ res_1600_900.xaml 25 114 RealityIncognita

回答

0

下面就来解决这个问题最简单的方法:

  1. 创建主窗口的一切大小以最常用的分辨率。
  2. 使用x:Name命名任何控件卫生组织边距,字体,大小,或任何需要的时候分辨率改变改变。

<Button x:Name="RedButton" Margin="0,0,0,4" Content="Fire" Click="RB_Click"/>

  • 在后面的代码,当用户改变分辨率,更新尺寸的东西:

    RedButton.Margin = new Thickness(10,10,10,40);

  • 执行高于或类似于需要调整大小的所有控件,并且它们将立即调整大小。

  • 另一种方式来解决这个问题(这是开始你出现一个):

    1. 创建每个你打算支持决议单独的用户控制。(我们这里叫他们UC1,UC2,UC3,UC4为简单起见)他们的
    2. 分配一个,你向用户显示一个窗口:

      myWindow.Child = UC1;

    3. 如果/当用户改变分辨率,只是改变其出现在窗口中的用户控制:

      myWindow.Child = UC3;

    它看起来像你可能在主窗口code-bahind内工作。如果是这样的话,这个替换上面的代码行:

    Child = UC1; 
    

    Child = UC3; 
    

    名称他们的东西很容易像UC

    +0

    能否请您详细解释,或链接,我可以找到示例代码?我对此仍然陌生,所以不知道如何实现你所说的。 – EvgenieT

    +0

    对不起所有这些问题,但我仍然不明白。在创建UserControl之后,我要在那里复制xaml代码,对吧?但我收到错误信息 - 我认为它们是关于我的空洞。我会用例子更新我的第一篇文章。我可以以某种方式取消所有这些,而不是逐个删除? – EvgenieT

    +0

    至于替代方案,手动更改大小和边距,这是我第一次尝试。问题是我有数百个对象,而且很难手工完成,而试图自动化会导致错误。 – EvgenieT