我想重用此行为,并且不能将其放入最近发现的任何类型的资源字典或样式中。所以我想尝试的是将其转换为c#,所以我想继承网格,并在可能的情况下将此行为添加到其中。欢迎任何建议。
这是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:0:0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Grid >
谢谢
修改 我只是想这样做,因为这种行为完全符合我的需要。但是我使用它的地方很多,而且我必须不断为每个网格添加它,我希望有一种Grid可以默认使用它。
答案 0 :(得分:1)
此样式用于维持启用或禁用控件的状态,并在条件更改时简单地切换状态。
通过表达,这是绑定到目标控件的InotifyProperty
的viewmodel上的布尔IsEnabled
更改值属性,这就是所需要的。
然后无论因素如何,都可以在代码后面或甚至在Xaml中切换值。
由于您提到网格/样式在许多地方重用,因此创建一个自定义用户控件,该控件基于网格构建并在其中构建样式。这样,所有样式提示(例如显示的那些)都可以集中到新网格中,并无缝地删除(重用)到其他xaml页面。