私はWrapPanelにいくつかのアイテムを持っています。アイテムをクリックして折り返しパネルの全幅に広げたいと思っています。私は、各項目に使用されているコントロールでExpandedとColapsedの2つの状態を作成してこれを試みました。 Expanded状態では、WrapPanelのActualWidthと等しいコントロールの幅をバインドしました。状態変更でWPFバインディングが機能しないのはなぜですか?
私が期待した結果が得られなかったとき、Expanded値を(バインディングの代わりに)特定の数値に設定しようとしました。それは働いている。アイテムは、2つの折りたたまれた幅と誇張された幅を切り替えます。私はまだ、Expanded状態をWrapPanelの幅と同じにしたいのですが、任意の固定幅ではありません。ビジュアルステートではなく直接Widthプロパティを直接バインドすると、WrapPanelのアイテムの幅が一致するため、バインディングが機能することがわかります。
バインディングと拡張状態 - 動作しません:ハードコードされた値を持つ
<VisualState x:Name="Expanded">
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Width)" Storyboard.TargetName="JobMaster">
<EasingDoubleKeyFrame KeyTime="0">
<EasingDoubleKeyFrame.Value>
<Binding
Path="ActualWidth"
RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type WrapPanel}}" />
</EasingDoubleKeyFrame.Value>
</EasingDoubleKeyFrame>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
拡張した状態 - 作品
<VisualState x:Name="Expanded">
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Width)" Storyboard.TargetName="JobMaster">
<EasingDoubleKeyFrame KeyTime="0" Value="800" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
バインドコントロールの幅プロパティを直接作品
<UserControl.Width>
<Binding
Path="ActualWidth"
RelativeSource="{RelativeSource AncestorType={x:Type WrapPanel}}" />
</UserControl.Width>
国家のバインディングはなぜ機能しないのですか、これを行う別の方法はありますか?
応答ありがとうございました。私は試してみましたが、効果がないようです。 – PeaceFrog
申し訳ありませんが、Visual State Managerで多くの経験がありません。ストーリーボードがスタイルトリガーで定義されている場合にのみ、私の提案が働くと思います。しかし、アニメーションをトリガするには、 "IsExpanded" _property_が必要です。 [プロパティ値が変更されたときにアニメーションをトリガする方法(http://msdn.microsoft.com/en-us/library/ms742536.aspx)VSMにそれを結びつける方法がわかりません。 –