具有VisualStates的WPF ControlTemplate
|
我想用预定义的VisualStates创建一个ControlTemplate。我想将它们与GoToStateActions和DataTriggers一起使用。
我不知道这里到底出了什么问题。在我看来,绑定不是按照我认为的那样建立的。
namespace ControlTemplateVisualState
{
using System.Windows.Controls;
public class MyControl : ContentControl
{
public MyControl()
{
this.DefaultStyleKey = typeof(MyControl);
}
}
}
<ResourceDictionary
xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"
xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"
xmlns:ControlTemplateVisualState=\"clr-namespace:ControlTemplateVisualState\"
xmlns:i=\"http://schemas.microsoft.com/expression/2010/interactivity\"
xmlns:ei=\"http://schemas.microsoft.com/expression/2010/interactions\">
<ControlTemplate x:Key=\"MyControlTemplate\" TargetType=\"{x:Type ControlTemplateVisualState:MyControl}\">
<Grid x:Name=\"grid\" Background=\"Red\">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name=\"VisualStateGroup\">
<VisualState x:Name=\"IsDisabledState\">
<Storyboard>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty=\"(Panel.Background).(SolidColorBrush.Color)\" Storyboard.TargetName=\"grid\">
<EasingColorKeyFrame KeyTime=\"0\" Value=\"#FF2BFF00\"/>
</ColorAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<i:Interaction.Triggers>
<ei:DataTrigger Binding=\"{Binding IsEnabled, ElementName=grid}\" Value=\"False\">
<ei:GoToStateAction StateName=\"IsDisabledState\"/>
</ei:DataTrigger>
</i:Interaction.Triggers>
</Grid>
</ControlTemplate>
<Style TargetType=\"{x:Type ControlTemplateVisualState:MyControl}\">
<Setter Property=\"Background\" Value=\"#FF0010FF\"/>
<Setter Property=\"Template\" Value=\"{StaticResource MyControlTemplate}\"/>
</Style>
</ResourceDictionary>
<Window
xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"
xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"
x:Class=\"ControlTemplateVisualState.MainWindow\"
x:Name=\"Window\"
xmlns:local=\"clr-namespace:ControlTemplateVisualState\"
Title=\"MainWindow\"
Width=\"640\" Height=\"480\">
<Grid x:Name=\"LayoutRoot\">
<local:MyControl IsEnabled=\"False\"/>
</Grid>
</Window>
没有找到相关结果
已邀请:
2 个回复
bab
稍有不同,但即使在Silverlight上也可以使用,请参阅:http://expressionblend.codeplex.com/wikipage?title=Behaviors%20and%20Effects&referringTitle=Documentation 如果使用WPF4,只需确保获得固定版本:http://expressionblend.codeplex.com/workitem/8148
届甸衬丝蚕