代码之家  ›  专栏  ›  技术社区  ›  Jaswant Agarwal

WPF中静态资源和动态资源有什么区别?

  •  3
  • Jaswant Agarwal  · 技术社区  · 16 年前

    WPF中静态资源和动态资源有什么区别?

    <ComboBox Canvas.Left="14" Style="{StaticResource ComboBoxStyle}"
              Canvas.Top="137" Height="33" Name="cmbItem" Width="170"
              SelectionChanged="cmbItem_SelectionChanged">
        <ComboBoxItem>Name</ComboBoxItem>
        <ComboBoxItem>Age</ComboBoxItem>
    </ComboBox>
    

    <Style x:Key="ComboBoxStyle" TargetType="{x:Type ComboBox}">
    
        <Setter Property="FocusVisualStyle" Value="{StaticResource ComboBoxFocusVisual}"/>
    
        <Setter Property="Foreground" Value="#FF436B13"/>
    </Style>
    
    2 回复  |  直到 14 年前
        1
  •  6
  •   Jon Skeet    16 年前

    使用动态资源时会对其进行评估。静态资源在加载时进行评估。

    MSDN :

    扩展,而不是被评估 在财产的背景下 集。静态资源标记 通过查看来扩展密钥 在加载过程中发生,即 加载过程的时间点 需要指定属性值 这需要静态资源 参考。动态资源标记 扩展程序通过以下方式处理密钥 创建表达式,并且 表达式将保持未求值状态,直到 应用程序实际运行在 计算表达式的时间 并提供一个值。

    关于何时应该选择哪个选项,有很多细节。

        2
  •  2
  •   Thomas Levesque    16 年前

    从你下面的评论中,乔恩的回答:

    我收到此错误“找不到名为“{ComboBoxFocusVisual}”的资源。资源名称区分大小写。标记文件中对象“cmbItem”处出错”

    我认为你的ComboBoxFocusVisional资源是在ComboBoxStyle之后声明的,所以 StaticResource DynamicResource 扩展