如何重用附加到网格的交互和交互

时间:2015-04-20 09:30:54

标签: wpf behavior

我正在尝试在wpf app中使用交互性和交互库。我需要它在网格上工作,它运行良好,但现在我需要多个网格中的这些东西,我无法找到一种重用它的方法。这是xaml

<Grid>
<i:Interaction.Behaviors>
    <ei:DataStateBehavior Binding="{Binding KeepAlive}"
                          FalseState="InactiveState"
                          TrueState="ActiveState"
                          Value="false" />
  </i:Interaction.Behaviors>
  <VisualStateManager.VisualStateGroups>
    <VisualStateGroup>
        <VisualState x:Name="ActiveState" />
        <VisualState x:Name="InactiveState">
            <Storyboard>
                <ObjectAnimationUsingKeyFrames 
                 Storyboard.TargetName="ActiveContainer"
                 Storyboard.TargetProperty="(Control.IsEnabled)">
                    <DiscreteObjectKeyFrame KeyTime="0:0:0">
                        <DiscreteObjectKeyFrame.Value>
                            <system:Boolean>False</system:Boolean>
                        </DiscreteObjectKeyFrame.Value>
                    </DiscreteObjectKeyFrame>
                </ObjectAnimationUsingKeyFrames>
                <ObjectAnimationUsingKeyFrames 
                 Storyboard.TargetName="InactiveContainer" 
                 Storyboard.TargetProperty="(UIElement.Visibility)">
                    <DiscreteObjectKeyFrame KeyTime="0">
                        <DiscreteObjectKeyFrame.Value>
                            <Visibility>Visible</Visibility>
                        </DiscreteObjectKeyFrame.Value>
                    </DiscreteObjectKeyFrame>
                </ObjectAnimationUsingKeyFrames>
            </Storyboard>
        </VisualState>
    </VisualStateGroup>
  </VisualStateManager.VisualStateGroups>

<Border>
  <Grid>
   Content comes here, Texboxes, labels when active or inactive etc.
  </Grid>       
</Border>
</Grid>

它工作得很好,但是如何重构上面的代码,以便我可以在多个网格上重用完全相同的行为?

谢谢

2 个答案:

答案 0 :(得分:0)

立即出现一些方法:风格或资源。但是在资源中声明时,Blend行为无法工作。您可以使用附属物。看到: How to add a Blend Behavior in a Style Setter

答案 1 :(得分:0)

我创建了通用行为,您可以从中继承并添加到您的样式

请参阅下面的答案

documentation for Android developers