【问题标题】:Import view from resource file从资源文件导入视图
【发布时间】:2017-08-19 04:39:35
【问题描述】:

我有一个资源文件Grids.xaml

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <Label x:Key="SomeTestLabel">Hello There</Label>

    <Grid x:Key="HomeGrid">
        <Label Content="{StaticResource SomeTestLabel}"></Label>
    </Grid>

</ResourceDictionary>

在我的Menus.xaml 文件中,我有

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <TabItem x:Key="HomeTab" Header="Home">
        <Grid><!-- PROBLEM IS RIGHT HERE --></Grid>
    </TabItem>

</ResourceDictionary>
  • 是否可以将&lt;Grid&gt;&lt;!-- PROBLEM IS RIGHT HERE --&gt;&lt;/Grid&gt;&lt;Grid x:Key="HomeGrid"&gt;...&lt;/Grid&gt; 关联起来?
  • 我可以使用更好的视图吗?
  • 有没有更好的方法来做到这一点?

我这样做的主要原因是将代码从一个文件 (MainWindow.xaml) 中重构到其他各种文件中,这样主文件和主资源文件就不会被随机的代码片段弄乱了

【问题讨论】:

  • 不要这样做。控制声明不属于资源字典。资源字典应该用于样式、画笔、主题、常见图像、转换器、模板以及其他一些小东西。但是 never plain 控制声明。那些属于WindowUserControl
  • @Herdo 感谢您将我指向UserControls,他们正是我正在寻找的。非常感谢!
  • @Herdo 嘿,我知道这已经有好几年了,但你能发表以上评论作为答案吗?我想将此问题标记为已回答^^
  • 检查一下。添加了一些额外的文字。

标签: c# wpf xaml layout resources


【解决方案1】:

&lt;ResourceDictionary /&gt; 不是声明控件的中心位置。在这些字典之一中声明的内容将被 控件(例如样式、画笔、主题、常用图像、转换器和模板)使用。

但是,控件声明(例如 &lt;Grid /&gt;始终是该特定类的实例,将由 WPF 框架呈现。一个控件一次只能存在于一个地方,因此,将一个控件放在ResourceDictionary 中并不是一个好主意(无论如何它都不能重用)。控件声明始终属于 UserControlWindow 或您希望显示的其他宿主控件。

【讨论】:

    猜你喜欢
    • 2016-04-09
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    相关资源
    最近更新 更多