使用 Expression Interactive Designer体验WPF

最近忙里偷闲体验一下.NET 3.0  Framework中的WPF,感触颇深。
记得前一阵看过一个 Thom Robbins的ppt,其中谈到WPF带来的根本性变化,要彻底的改变以往程序员的开发流程。示意如下:

前两天安装完毕VS2005 wpf extension(November CTP version)后使用wizard创建了一个wpf application发现,在vs2005中设计xaml文件很不爽。打开xaml设计器等待时间很长,而且xaml文件不能手工编辑(可能是个例,能cut/paste,不能键入新字符,不知大家的如何?),另外发现在退出vs2005时常常引起错误。
做程序久了,很少愿意使用UI设计类的工具设计UI,但实在难以忍受vs2005 wpf extension这些或大或小的不便之处了,就下载了一个Expression Interactive Designer来试试看。发现现在这个CTP版本使用起来不错的,至少比在vs里编辑xaml方便多了,而且支持timeline编辑,可以很方便的
实现动画功能,看上去很像flash啊,看来以后这些presentation要殊途同归了。
言归正传,下面是EID编辑出来的xaml文件
ContractedBlock.gif ExpandedBlockStart.gif
  1None.gif<Grid 
  2None.gif    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  3None.gif    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  4None.gif    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  5None.gif    xmlns:d="http://schemas.microsoft.com/expression/interactivedesigner/2006"
  6None.gif    mc:Ignorable="d"
  7None.gif    
  8None.gif    x:Name="DocumentRoot"
  9None.gif    x:Class="CodeSearch.Scene1" 
 10None.gif    Width="640" Height="480" xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Classic">
 11None.gif  <Grid.Background>
 12None.gif    <LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5">
 13None.gif      <LinearGradientBrush.GradientStops>
 14None.gif        <GradientStopCollection>
 15None.gif          <GradientStop Color="sc#1, 0.05, 0.05, 0.05" Offset="0"/>
 16None.gif          <GradientStop Color="sc#1, 0.5, 0.5, 0.5" Offset="0.602852203975801"/>
 17None.gif          <GradientStop Color="#FF000000" Offset="1"/>
 18None.gif        </GradientStopCollection>
 19None.gif      </LinearGradientBrush.GradientStops>
 20None.gif      <LinearGradientBrush.RelativeTransform>
 21None.gif        <TransformGroup>
 22None.gif          <TranslateTransform X="-0.5" Y="-0.5"/>
 23None.gif          <ScaleTransform ScaleX="1" ScaleY="1"/>
 24None.gif          <SkewTransform AngleX="0" AngleY="0"/>
 25None.gif          <RotateTransform Angle="90"/>
 26None.gif          <TranslateTransform X="0.5" Y="0.5"/>
 27None.gif          <TranslateTransform X="0" Y="0"/>
 28None.gif        </TransformGroup>
 29None.gif      </LinearGradientBrush.RelativeTransform>
 30None.gif    </LinearGradientBrush>
 31None.gif  </Grid.Background>
 32None.gif  <Grid.Resources>
 33None.gif    <Storyboard x:Key="OnLoaded">
 34None.gif            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="FeedView">
 35None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="1" KeyTime="00:00:00"/>
 36None.gif            </DoubleAnimationUsingKeyFrames>
 37None.gif            <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="FeedView">
 38None.gif                <DiscreteObjectKeyFrame d:KeyEase="Linear;Hold;0.5;0.5;0;0" Value="{x:Static Visibility.Visible}" KeyTime="00:00:00"/>
 39None.gif            </ObjectAnimationUsingKeyFrames>
 40None.gif            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[1].(ScaleTransform.ScaleX)" Storyboard.TargetName="FeedView">
 41None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="0.003539823008849492" KeyTime="00:00:00"/>
 42None.gif            </DoubleAnimationUsingKeyFrames>
 43None.gif            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[1].(ScaleTransform.ScaleY)" Storyboard.TargetName="FeedView">
 44None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="0.0030395136778115484" KeyTime="00:00:00"/>
 45None.gif            </DoubleAnimationUsingKeyFrames>
 46None.gif            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[5].(TranslateTransform.X)" Storyboard.TargetName="FeedView">
 47None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="-281.5" KeyTime="00:00:00"/>
 48None.gif            </DoubleAnimationUsingKeyFrames>
 49None.gif            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[5].(TranslateTransform.Y)" Storyboard.TargetName="FeedView">
 50None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="-164" KeyTime="00:00:00"/>
 51None.gif            </DoubleAnimationUsingKeyFrames>
 52None.gif        </Storyboard>
 53None.gif        <Storyboard x:Key="SearchCompleted" d:StoryboardName="SearchCompleted">
 54None.gif            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[1].(ScaleTransform.ScaleX)" Storyboard.TargetName="FeedView">
 55None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="0.01415929203539823" KeyTime="00:00:00"/>
 56None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="0.037168141592920353" KeyTime="00:00:00.2500000"/>
 57None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="0.0902654867256637" KeyTime="00:00:00.5420000"/>
 58None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="0.17168141592920352" KeyTime="00:00:00.7500000"/>
 59None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="0.35575221238938054" KeyTime="00:00:01.0420000"/>
 60None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="0.41061946902654861" KeyTime="00:00:01.2920000"/>
 61None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="0.51858407079646007" KeyTime="00:00:01.5000000"/>
 62None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="0.61769911504424768" KeyTime="00:00:01.7500000"/>
 63None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="0.74867256637168111" KeyTime="00:00:01.9580000"/>
 64None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="0.88495575221238865" KeyTime="00:00:02.2920000"/>
 65None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="0.97876106194690116" KeyTime="00:00:03"/>
 66None.gif            </DoubleAnimationUsingKeyFrames>
 67None.gif            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[5].(TranslateTransform.X)" Storyboard.TargetName="FeedView">
 68None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="-278.5" KeyTime="00:00:00"/>
 69None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="-272" KeyTime="00:00:00.2500000"/>
 70None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="-257" KeyTime="00:00:00.5420000"/>
 71None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="-234" KeyTime="00:00:00.7500000"/>
 72None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="-182" KeyTime="00:00:01.0420000"/>
 73None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="-166.5" KeyTime="00:00:01.2920000"/>
 74None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="-136" KeyTime="00:00:01.5000000"/>
 75None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="-108.00000000000001" KeyTime="00:00:01.7500000"/>
 76None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="-71.000000000000057" KeyTime="00:00:01.9580000"/>
 77None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="-32.500000000000185" KeyTime="00:00:02.2920000"/>
 78None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="-6.000000000000405" KeyTime="00:00:03"/>
 79None.gif            </DoubleAnimationUsingKeyFrames>
 80None.gif            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[1].(ScaleTransform.ScaleY)" Storyboard.TargetName="FeedView">
 81None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="0.0364741641337386" KeyTime="00:00:00"/>
 82None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="0.079027355623100315" KeyTime="00:00:00.2500000"/>
 83None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="0.18237082066869309" KeyTime="00:00:00.5420000"/>
 84None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="0.34346504559270541" KeyTime="00:00:00.7500000"/>
 85None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="0.55319148936170282" KeyTime="00:00:01.0420000"/>
 86None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="0.61702127659574613" KeyTime="00:00:01.2920000"/>
 87None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="0.747720364741644" KeyTime="00:00:01.5000000"/>
 88None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="0.87537993920973167" KeyTime="00:00:01.7500000"/>
 89None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="0.96352583586627183" KeyTime="00:00:01.9580000"/>
 90None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="0.99696048632220935" KeyTime="00:00:02.2920000"/>
 91None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="1.0759878419453304" KeyTime="00:00:03"/>
 92None.gif            </DoubleAnimationUsingKeyFrames>
 93None.gif            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[5].(TranslateTransform.Y)" Storyboard.TargetName="FeedView">
 94None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="-158.5" KeyTime="00:00:00"/>
 95None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="-151.5" KeyTime="00:00:00.2500000"/>
 96None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="-134.5" KeyTime="00:00:00.5420000"/>
 97None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="-107.99999999999997" KeyTime="00:00:00.7500000"/>
 98None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="-73.499999999999915" KeyTime="00:00:01.0420000"/>
 99None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="-62.9999999999998" KeyTime="00:00:01.2920000"/>
100None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="-41.499999999999588" KeyTime="00:00:01.5000000"/>
101None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="-20.499999999999165" KeyTime="00:00:01.7500000"/>
102None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="-5.9999999999983142" KeyTime="00:00:01.9580000"/>
103None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="-0.49999999999659916" KeyTime="00:00:02.2920000"/>
104None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="12.500000000006818" KeyTime="00:00:03"/>
105None.gif            </DoubleAnimationUsingKeyFrames>
106None.gif            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="FeedView">
107None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="0.95377503852080248" KeyTime="00:00:00"/>
108None.gif                <SplineDoubleKeyFrame d:KeyEase="Linear;Linear;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="1" KeyTime="00:00:00.2500000"/>
109None.gif            </DoubleAnimationUsingKeyFrames>
110None.gif        </Storyboard>
111None.gif        <Style x:Key="TreeViewStyle1" TargetType="{x:Type TreeView}">
112None.gif            <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"/>
113None.gif            <Setter Property="BorderBrush">
114None.gif                <Setter.Value>
115None.gif                    <SolidColorBrush/>
116None.gif                </Setter.Value>
117None.gif            </Setter>
118None.gif            <Setter Property="BorderThickness" Value="2,2,2,2"/>
119None.gif            <Setter Property="Padding" Value="1,1,1,1"/>
120None.gif            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
121None.gif            <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
122None.gif            <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
123None.gif            <Setter Property="VerticalContentAlignment" Value="Center"/>
124None.gif            <Setter Property="Template">
125None.gif                <Setter.Value>
126None.gif                    <ControlTemplate TargetType="{x:Type TreeView}">
127None.gif                        <Microsoft_Windows_Themes:ClassicBorderDecorator Background="{TemplateBinding Background}" x:Name="ClassicBorderDecorator" BorderStyle="Sunken" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
128None.gif                            <ScrollViewer Focusable="False" Background="{TemplateBinding Background}" x:Name="ScrollViewer" Padding="{TemplateBinding Padding}" HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}" VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}" CanContentScroll="False">
129None.gif                                <ItemsPresenter x:Name="ItemsPresenter"/>
130None.gif                            </ScrollViewer>
131None.gif                        </Microsoft_Windows_Themes:ClassicBorderDecorator>
132None.gif                    </ControlTemplate>
133None.gif                </Setter.Value>
134None.gif            </Setter>
135None.gif        </Style>
136None.gif  </Grid.Resources>
137None.gif    <Grid.Triggers>
138None.gif        <EventTrigger RoutedEvent="FrameworkElement.Loaded">
139None.gif            <BeginStoryboard x:Name="OnLoaded_BeginStoryboard" Storyboard="{DynamicResource OnLoaded}"/>
140None.gif        </EventTrigger>
141None.gif        <EventTrigger RoutedEvent="Button.Click" SourceName="Button">
142None.gif            <EventTrigger.Actions>
143None.gif                <BeginStoryboard Storyboard="{DynamicResource SearchCompleted}" x:Name="SearchCompleted_BeginStoryboard"/>
144None.gif            </EventTrigger.Actions>
145None.gif        </EventTrigger>        
146None.gif    </Grid.Triggers>
147None.gif    
148None.gif    <Grid.ColumnDefinitions>
149None.gif        <ColumnDefinition/>
150None.gif    </Grid.ColumnDefinitions>
151None.gif    <Grid.RowDefinitions>
152None.gif        <RowDefinition Height="0.3625*" />
153None.gif    <RowDefinition Height="0.6375*" />
154None.gif  </Grid.RowDefinitions>
155None.gif    <Button Click="OnClick" HorizontalAlignment="Right" Margin="0,68,138,86" Width="99" x:Name="Button" Content="Search Code" Foreground="sc#1, 0.0320657268, 0.0320657268, 0.0320657268">
156None.gif
157None.gif    </Button>    
158None.gif    <TextBox VerticalAlignment="Top" Margin="48,28,266,0" Height="21" x:Name="TextBox" Text="http://www.google.com/codesearch/feeds/search" TextWrapping="Wrap"/>
159None.gif    <TextBox Margin="47,68,267,85" x:Name="TextBox1" RenderTransformOrigin="0.5,0.5" Text="" TextWrapping="Wrap">
160None.gif        <TextBox.RenderTransform>
161None.gif            <TransformGroup>
162None.gif                <TranslateTransform X="0" Y="0"/>
163None.gif                <ScaleTransform ScaleX="1" ScaleY="1"/>
164None.gif                <SkewTransform AngleX="0" AngleY="0"/>
165None.gif                <RotateTransform Angle="-0.20186333216423114"/>
166None.gif                <TranslateTransform X="0" Y="0"/>
167None.gif                <TranslateTransform X="0" Y="0"/>
168None.gif            </TransformGroup>
169None.gif        </TextBox.RenderTransform>
170None.gif    </TextBox>
171None.gif    <TreeView Margin="46,115,29,36" x:Name="FeedView" Grid.RowSpan="2" RenderTransformOrigin="0.5,0.5" Style="{DynamicResource TreeViewStyle1}" >
172None.gif        <TreeView.RenderTransform>
173None.gif            <TransformGroup>
174None.gif                <TranslateTransform X="0" Y="0"/>
175None.gif                <ScaleTransform ScaleX="1" ScaleY="1"/>
176None.gif                <SkewTransform AngleX="0" AngleY="0"/>
177None.gif                <RotateTransform Angle="0"/>
178None.gif                <TranslateTransform X="0" Y="0"/>
179None.gif                <TranslateTransform X="0" Y="0"/>
180None.gif            </TransformGroup>
181None.gif        </TreeView.RenderTransform>
182None.gif    </TreeView>
183None.gif</Grid>

这些xaml文件代码要是手写得累够呛吧,幸好有Expression Interactive Designer。
这个简单的UI的主要功能就是从Google Code Search上搜索代码用的,这些业务性代码最好还是用vs2005来吧,在button click里编写完毕就可以了。具体代码比较简单就不一一累述了。

总结一下,未来程序的开发过程分离的要更合理了,美工人员设计UI,程序员可以更专注的编写核心逻辑代码,不用一天到晚的操心控件摆放,动画效果什么的了,呵呵。

例子代码:CodeSearch.rar

转载于:https://www.cnblogs.com/snowy/archive/2006/11/11/557417.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值