在多个XAML文件之间切换

时间:2016-12-13 20:14:49

标签: c# wpf xaml dynamic

我正在制作视频游戏,在这个级别上,我试图让它运行多个分辨率选项。

对于我的游戏中可用的每种可能的分辨率,我制作了一个单独的xaml文件,具有不同的高度,宽度,边距,字体大小,但代码附件相同。

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

例如,在游戏开始时,我希望应用程序检查哪个分辨率现在处于活动状态。

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

类似的东西:

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

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

如果有另一种方法可以同时改变所有物体的所有尺寸和位置,我会很高兴听到它。

谢谢你, 叶甫盖尼

UPD:将xaml复制到UserControl后的错误消息

  

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

1 个答案:

答案 0 :(得分:0)

这是解决这个问题的最简单方法:

  1. 根据最常用的分辨率创建主窗口。
  2. 使用x:Name命名任何边距,字体,大小或任何更改分辨率时需要更改的控件。
  3. <Button x:Name="RedButton" Margin="0,0,0,4" Content="Fire" Click="RB_Click"/>

    1. 在后面的代码中,当用户更改分辨率时,请更新内容的大小:

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

    2. 执行以上或类似于需要调整大小的所有控件,它们会立即调整大小。

    3. 解决此问题的另一种方法(这是你似乎已经开始的方式):

      1. 为您计划支持的每个分辨率创建单独的用户控件。 (为了简单起见,我们称之为UC1,UC2,UC3,UC4)
      2. 将其中一个分配给您要向用户显示的窗口:

        myWindow.Child = UC1;

      3. 如果/当用户更改分辨率时,只需更改窗口中显示的用户控件:

        myWindow.Child = UC3;

      4. 看起来你可能正在主窗口代码-bahind中工作。如果是这种情况,请用以下代码替换上面的代码行:

        Child = UC1;
        

        Child = UC3;
        

        将它们命名为UC