表达式混合(Expression Blend)是否支持设计时特定的可视化效果?

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

我知道可以在“加载时”更改可见性,但是每次创建这样的控件时都不想打那么多字。有没有什么秘诀可以让我们做到这一点?

1个回答

0

好的,这里有一个猜测。

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属性没有任何意义,因为像你写的我简洁版本一样,它被设计程序简单地忽略了。虽然在使用时不会出错,但它似乎不属于设计程序命名空间。最终,我使用了状态 - 但实际上我本不需要这么做... - Billy Back Bedroom
2
你应该用可运行的代码回答自己的问题。 - user1228

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接