gpt4 book ai didi

wpf - 条件 XAML

转载 作者:行者123 更新时间:2023-12-04 07:54:28 25 4
gpt4 key购买 nike

为了便于开发,我使用 ViewBox 将所有内容包装在一个窗口中。这是因为我的开发机器的屏幕比部署机器的屏幕小,所以使用 ViewBox 可以更好地实现比例。显然,它没有理由出现在代码的发布版本中。是否有一种简单的方法可以有条件地在 XAML 中包含/排除“包装”ViewBox?

例如

<Window>
<Viewbox>
<UserControl /*Content*/>
</Viewbox>
</Window>

最佳答案

在可访问的资源字典中创建两个控件模板。

它们应该是这样的

<ControlTemplate x:key="debug_view">
<ViewBox>
<ContentPresenter Content={Binding} />
</ViewBox>
</ControlTemplate>
<ControlTemplate x:key="release_view">
<ContentPresenter Content={Binding} />
</ControlTemplate>

然后你可以在你的主视图中使用它

<Window>
<ContentControl Template="{StaticResource debug_view}">
<UserControl /*Content*/ ...>
</ContentControl>
</Window>

然后来回切换只需将 StaticResource 绑定(bind)中的查找键从 'debug_view' 更改为 'release_view'

如果你想让它更有活力,你还可以这样做:

<Window>
<ContentControl Loaded="MainContentLoaded">
<UserControl /*Content*/ ...>
</ContentControl>
</Window>

然后在你的代码隐藏中

void MainContentLoaded(object sender, RoutedEventArgs e)
{
ContentControl cc = (ContentControl) sender;
#if DEBUG
sender.Template = (ControlTemplate) Resources["debug_view"];
#else
sender.Template = (ControlTemplate) Resources["release_view"];
#endif
}

根据是否定义了 DEBUG 符号,将选择不同的模板。

关于wpf - 条件 XAML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2909152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com