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 に答える