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" />

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

4

1 回答 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" />
于 2009-09-02T14:04:37.893 回答