Expression Blend设计时特定的视觉效果是否可行?

时间:2009-09-02 13:27:06

标签: visibility expression-blend design-time

我正在尝试在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" />

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

1 个答案:

答案 0 :(得分:0)

嗯,这是一个猜测。

d:名称空间用于在设计时受到尊重但在运行时被忽略的内容。因此,我们希望在d:namespace中以某种方式设置可见性,它将覆盖运行时的可见性集。

内联样式覆盖全局或通过StaticResource设置的样式,所以我建议这样做(从内存中 - 不要只是复制并粘贴它,理解概念):

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