IはRectangle
とRectangleGeometry
によって定義Path
を有する:アニメーション化されたストロークの太さで矩形パスのサイズを動的に変更する方法はありますか?
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Rectangle Grid.Row="0" Stroke="Red" Width="{Binding RctWidth}"/>
<Path Grid.Row="1" Stroke="Red">
<Path.Data>
<RectangleGeometry Rect="0,0,50,10"/>
</Path.Data>
<Path.Triggers>
<EventTrigger RoutedEvent="Path.Loaded">
<BeginStoryboard>
<Storyboard TargetProperty="StrokeThickness">
<DoubleAnimation RepeatBehavior="Forever" From="1" To="3" Duration="0:0:0.5"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Path.Triggers>
</Path>
</Grid>
矩形は、その幅が動的結合に応じて変化します。 長方形Path
には、StrokeThickness
にアニメーションが適用されています。 長方形Path
は、その矩形のサイズと正確に一致しますが、ストロークの太さのアニメーションはそれに影響しません(太いストロークではを実際にRectangle
より少し大きくする必要があります)。 )。
どうすればいいですか?
Path
のStretch="Fill"
プロパティは使用できません。その場合、ストロークの太さはPath
の境界内でのみ増加しますが、ストロークのデフォルト動作を内側と外側の両方向に拡大したいと考えています。
さらに、Rectangle
の幅がバインドされているビューモデルを変更することはできません。それは私が変更することができない外部コンポーネントです。
実際にはRectangle
を取り除くことができました。私にとって重要なことは、Path
と動的に変化する幅です。
あなたのビューモデルのプロパティに 'Path.Data'をバインドすることができます。 'RctWidth'が変更されるたびに、新しい' RectangleGeometry'を作成し、そのプロパティに割り当てることができます。 –
@YusufTarıkGünaydın、人生が楽にできたら...残念ながら、それは外部コンポーネントだからビューモデルに触れることはできません。私は、純粋なXAMLの方法か、またはいくつかの付加されたプロパティ/ビヘイビア/まったくのいずれかを探しています。 – dymanoid
おそらく、負のマージンを追加して厚さの増加効果をキャンセルすることができます。 – grek40