【问题标题】:Are Expression Blend design-time specific visuals possible?Expression Blend 设计时特定的视觉效果是否可行?
【发布时间】:2010-11-24 22:59:56
【问题描述】:

我正在尝试在 Blend 3 中设计一些 UserControl 类。我希望它们的一部分在运行时创建时“折叠”,但我希望能够编辑它们的组件部分而无需每次都摆弄代码构建。

它适用于示例数据源,如下例所示。但它似乎不适用于其他属性......还是我做错了什么?

使用示例数据源 SDS_AIVertexAction 我们可以在 Expression Blend 中执行此操作:

<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication1"
mc:Ignorable="d"
...>


<Grid x:Name="LayoutRoot" 
    d:DataContext="{Binding Source={StaticResource SDS_AIVertexAction}}" >
    ...
</Grid>

但似乎无法做到这一点:

 <Label Content="{Binding Name}" Visibility="Collapsed" d:Visibility="Visible" />

我意识到我可以在“加载时”更改可见性,但我真的不想每次进行这样的控件时都输入所有这些废话。有人知道让我们这样做的秘密吗?

【问题讨论】:

    标签: visibility expression-blend design-time


    【解决方案1】:

    好吧,这是一个猜测。

    d: 命名空间用于在设计时受到尊重但在运行时被忽略的东西。所以我们想在 d: 命名空间中以某种方式设置可见性,它会覆盖为运行时设置的可见性。

    内联样式会覆盖全局或通过 StaticResource 设置的样式,所以我建议这样做(凭记忆——不要只是复制和粘贴它,理解这个概念):

    <UserControl.Resources>
      <Style x:Key="invisible" TargetType="Label">
        <Setter Property="Visibility" Value="Collapsed"/>
      </Style>
    </UserControl.Resources>
    <!-- ... -->
    <Label Style="{StaticResource invisible}" d:Visibility="Visible" />
    

    【讨论】:

    • 在 d:Visibility 属性中看起来没有任何意义,因为就像我对您所写内容的不那么冗长的版本一样 - 它只是被设计师忽略了。似乎 Visibility 不在设计器命名空间中;尽管在使用时没有抱怨。最后我使用了状态 - 但我不应该真的需要......
    • 你应该用工作代码回答你自己的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多