在上一篇中曾留下两个问题,.Net捆绑安装不触发以及路径选择的问题现在都已经解决,这段时间花的最多的地方还是WPF调样式上面,奈何WPF功力不够,暂时还是没有达到自己想要的效果。另外ViewModel做了些调整,状态更加分明。安装效果是仿照搜狗输入法做的。先上效果图。
以上这只是四个基本的页面,更细化一些可以分出卸载的进度页面,卸载的完成页面,对修复同理,还有安装失败,用户取消提示页面,再就是能检测新版本并覆盖安装,这些都可以根据状态去添加页面。下面简单的说下思路和新的问题点。
关键流程
安装包运行之后,首先触发的重要的事件之一就是 DetectPackageComplete,Bootstrapper按照Bundle.wxs Chain里面Package的顺序来检测当前电脑是否安装了其中的程序。
<Chain DisableRollback='yes'> <PackageGroupRef Id="Netfx4Full" /> <MsiPackage Id="HeartBeats" SourceFile="D:\SetUp\Main\TestWix\bin\Debug\zh-cn\WPFDemo.msi" Compressed="yes" DisplayInternalUI="no" > <MsiProperty Name="INSTALLFOLDER" Value="[InstallFolder]"/> </MsiPackage> </Chain>
像这样,首先会判断是否安装了.Net4.0,但是在WPF程序里面我们需要判断的还是HeartBeats这个安装包。·
protected void DetectPackageComplete(object sender, DetectPackageCompleteEventArgs e) { PackageId = e.PackageId; //对应的是MsiPackage Id="HeartBeats" //MessageBox.Show(e.PackageId + e.State); if (e.PackageId.Equals("HeartBeats", StringComparison.Ordinal)) { State = e.State == PackageState.Present ? InstallState.Present : InstallState.NotPresent; //State = InstallState.NotPresent; } }
如果这个安装包的State等于 PackageState.Present 那说明当前电脑已经安装过了,那就要出现卸载和修复的界面,反之就是出现安装的界面(因此也可以控制用户不能直接卸载,可以让用户提交一些数据之后再卸载)。然后会执行PlanBegin->PlanComplete->
ApplyBegin->ApplyComplete. 从字面意思理解就是安装准备到执行完毕的过程。InstallState的值就是在这些事件中发生变化,这也是从进度条页面切换到完成页面的顺序。InstallState 为Applied就是安装完成了。
public enum InstallState { Initializing, Present, NotPresent, Applying, Cancelled, Applied, Failed, }
其他的一些细节在前文里面有讲,这里就不再赘述。
安装界面布局
这里的布局主要是四个Grid根据状态不断的切换。当然你可以添加更多的状态也展示不同的页面。


<Grid Grid.Row="1" Background="White" Visibility="{Binding InstallEnabled,Converter={StaticResource BooleanToVisibilityConverter}}" > <Grid.RowDefinitions> <RowDefinition Height="2*" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <Rectangle MouseLeftButtonDown="Background_MouseLeftButtonDown" /> <StackPanel Grid.Row="0" VerticalAlignment="Stretch" Style="{StaticResource InstallGrid}" > <StackPanel.Background> <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> <GradientStop Color="White" Offset="0" /> <GradientStop Color="AliceBlue" Offset="1" /> </LinearGradientBrush> </StackPanel.Background> <TextBlock HorizontalAlignment="Center" Padding="10" FontSize="40" Foreground="#33CCFF" IsHitTestVisible="False" Text="{Binding SoftName}" ></TextBlock> <Button Height="40" HorizontalAlignment="Center" IsEnabled="{Binding IsAgree,UpdateSourceTrigger=PropertyChanged}" Width="200" Style="{StaticResource BuleBt}" Command="{Binding InstallCommand}" >立即安装</Button> <TextBlock Foreground="Gray" Padding="5 10 0 0" VerticalAlignment="Center" HorizontalAlignment="Center" TextDecorations="{x:Null}"> <Hyperlink NavigateUri="http://www.cnblogs.com/stoneniqiu/" RequestNavigate="Hyperlink_OpenGuid" > <Label Content="安装指南" VerticalContentAlignment="Bottom" FontSize="13" Margin="0" Padding="0" Foreground="#666" ></Label> </Hyperlink> </TextBlock> </StackPanel><span style="color: #0000ff;"><</span><span style="color: #800000;">Border </span><span style="color: #ff0000;">Grid.Row</span><span style="color: #0000ff;">="1"</span><span style="color: #ff0000;"> HorizontalAlignment</span><span style="color: #0000ff;">="Left"</span><span style="color: #ff0000;"> Width</span><span style="color: #0000ff;">="580"</span><span style="color: #ff0000;"> Height</span><span style="color: #0000ff;">="110"</span><span style="color: #ff0000;"> VerticalAlignment</span><span style="color: #0000ff;">="Top"</span><span style="color: #ff0000;"> BorderBrush</span><span style="color: #0000ff;">="Gainsboro"</span><span style="color: #ff0000;"> BorderThickness</span><span style="color: #0000ff;">="0 0 0 0"</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">Grid </span><span style="color: #ff0000;">Style</span><span style="color: #0000ff;">="</span><span style="color: #808000;">{StaticResource DirGrid}</span><span style="color: #0000ff;">"</span> <span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">Grid.RowDefinitions</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">RowDefinition </span><span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">RowDefinition </span><span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">RowDefinition </span><span style="color: #0000ff;">/></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">Grid.RowDefinitions</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">Grid.ColumnDefinitions</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">ColumnDefinition </span><span style="color: #ff0000;">Width</span><span style="color: #0000ff;">="*"</span><span style="color: #0000ff;">></</span><span style="color: #800000;">ColumnDefinition</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">ColumnDefinition </span><span style="color: #ff0000;">Width</span><span style="color: #0000ff;">="3*"</span> <span style="color: #0000ff;">></</span><span style="color: #800000;">ColumnDefinition</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">Grid.ColumnDefinitions</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">Label </span><span style="color: #ff0000;">Grid.Row</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> Grid.Column</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> Content</span><span style="color: #0000ff;">="安装位置:"</span><span style="color: #ff0000;"> HorizontalAlignment</span><span style="color: #0000ff;">="Right"</span><span style="color: #ff0000;"> VerticalContentAlignment</span><span style="color: #0000ff;">="Center"</span> <span style="color: #0000ff;">></</span><span style="color: #800000;">Label</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">TextBox </span><span style="color: #ff0000;">Grid.Column</span><span style="color: #0000ff;">="1"</span><span style="color: #ff0000;"> Grid.Row</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> Width</span><span style="color: #0000ff;">="280"</span><span style="color: #ff0000;"> Height</span><span style="color: #0000ff;">="25"</span><span style="color: #ff0000;"> Background</span><span style="color: #0000ff;">="White"</span><span style="color: #ff0000;"> Margin</span><span style="color: #0000ff;">="10 5"</span><span style="color: #ff0000;"> HorizontalAlignment</span><span style="color: #0000ff;">="Left"</span><span style="color: #ff0000;"> Text</span><span style="color: #0000ff;">="</span><span style="color: #808000;">{Binding InstallFollder,UpdateSourceTrigger=PropertyChanged}</span><span style="color: #0000ff;">"</span> <span style="color: #0000ff;">></</span><span style="color: #800000;">TextBox</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">Button </span><span style="color: #ff0000;">Grid.Column</span><span style="color: #0000ff;">="1"</span><span style="color: #ff0000;"> Grid.Row</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> Width</span><span style="color: #0000ff;">="50"</span><span style="color: #ff0000;"> Height</span><span style="color: #0000ff;">="25"</span><span style="color: #ff0000;"> Style</span><span style="color: #0000ff;">="</span><span style="color: #808000;">{StaticResource BuleBt}</span><span style="color: #0000ff;">"</span><span style="color: #ff0000;"> Margin</span><span style="color: #0000ff;">="0 0 90 0"</span><span style="color: #ff0000;"> Name</span><span style="color: #0000ff;">="SelectFile"</span><span style="color: #ff0000;"> Click</span><span style="color: #0000ff;">="SelectFile_OnClick"</span><span style="color: #ff0000;"> FontSize</span><span style="color: #0000ff;">="14"</span><span style="color: #ff0000;"> HorizontalAlignment</span><span style="color: #0000ff;">="Right"</span> <span style="color: #0000ff;">></span>浏览<span style="color: #0000ff;"></</span><span style="color: #800000;">Button</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">CheckBox </span><span style="color: #ff0000;">Grid.Row</span><span style="color: #0000ff;">="1"</span><span style="color: #ff0000;"> IsChecked</span><span style="color: #0000ff;">="</span><span style="color: #808000;">{Binding IsAgree,UpdateSourceTrigger=PropertyChanged}</span><span style="color: #0000ff;">"</span><span style="color: #ff0000;"> Grid.Column</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> Grid.ColumnSpan</span><span style="color: #0000ff;">="2"</span><span style="color: #ff0000;"> HorizontalAlignment</span><span style="color: #0000ff;">="Center"</span><span style="color: #ff0000;"> VerticalAlignment</span><span style="color: #0000ff;">="Center"</span><span style="color: #ff0000;"> Margin</span><span style="color: #0000ff;">="10 0 0 0"</span> <span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">TextBlock </span><span style="color: #ff0000;">Foreground</span><span style="color: #0000ff;">="Gray"</span><span style="color: #ff0000;"> Padding</span><span style="color: #0000ff;">="5 0 0 0"</span><span style="color: #ff0000;"> VerticalAlignment</span><span style="color: #0000ff;">="Center"</span><span style="color: #ff0000;"> TextDecorations</span><span style="color: #0000ff;">="</span><span style="color: #808000;">{x:Null}</span><span style="color: #0000ff;">"</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">Label </span><span style="color: #ff0000;">Content</span><span style="color: #0000ff;">="我已经阅读并最终接受:"</span><span style="color: #ff0000;"> VerticalContentAlignment</span><span style="color: #0000ff;">="Bottom"</span><span style="color: #ff0000;"> FontSize</span><span style="color: #0000ff;">="12"</span><span style="color: #ff0000;"> Margin</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> Padding</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> Foreground</span><span style="color: #0000ff;">="Gray"</span> <span style="color: #0000ff;">></</span><span style="color: #800000;">Label</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">Hyperlink </span><span style="color: #ff0000;">NavigateUri</span><span style="color: #0000ff;">="http://www.cnblogs.com/stoneniqiu/"</span><span style="color: #ff0000;"> RequestNavigate</span><span style="color: #0000ff;">="Hyperlink_OnRequestNavigate"</span> <span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">Label </span><span style="color: #ff0000;">Content</span><span style="color: #0000ff;">="用户协议"</span><span style="color: #ff0000;"> VerticalContentAlignment</span><span style="color: #0000ff;">="Bottom"</span><span style="color: #ff0000;"> FontSize</span><span style="color: #0000ff;">="12"</span><span style="color: #ff0000;"> Margin</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> Padding</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> Foreground</span><span style="color: #0000ff;">="DodgerBlue"</span> <span style="color: #0000ff;">></</span><span style="color: #800000;">Label</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">Hyperlink</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">TextBlock</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">CheckBox</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">Label </span><span style="color: #ff0000;">Name</span><span style="color: #0000ff;">="InstalLabel"</span><span style="color: #ff0000;"> Grid.Column</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> Grid.ColumnSpan</span><span style="color: #0000ff;">="2"</span><span style="color: #ff0000;"> Content</span><span style="color: #0000ff;">="</span><span style="color: #808000;">{Binding SpaceInfo,UpdateSourceTrigger=PropertyChanged}</span><span style="color: #0000ff;">"</span><span style="color: #ff0000;"> Foreground</span><span style="color: #0000ff;">="Gray"</span><span style="color: #ff0000;"> HorizontalAlignment</span><span style="color: #0000ff;">="Center"</span><span style="color: #ff0000;"> Grid.Row</span><span style="color: #0000ff;">="2"</span><span style="color: #ff0000;"> Margin</span><span style="color: #0000ff;">="5 0 0 0"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">Grid</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">Border</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">Grid</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">Grid </span><span style="color: #ff0000;">Grid.Row</span><span style="color: #0000ff;">="1"</span><span style="color: #ff0000;"> Visibility</span><span style="color: #0000ff;">="</span><span style="color: #808000;">{Binding UninstallEnabled,Converter={StaticResource BooleanToVisibilityConverter}}</span><span style="color: #0000ff;">"</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">Grid.Background</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">LinearGradientBrush </span><span style="color: #ff0000;">StartPoint</span><span style="color: #0000ff;">="0,0"</span><span style="color: #ff0000;"> EndPoint</span><span style="color: #0000ff;">="0,1"</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">GradientStop </span><span style="color: #ff0000;">Color</span><span style="color: #0000ff;">="White"</span><span style="color: #ff0000;"> Offset</span><span style="color: #0000ff;">="0"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">GradientStop </span><span style="color: #ff0000;">Color</span><span style="color: #0000ff;">="WhiteSmoke"</span><span style="color: #ff0000;"> Offset</span><span style="color: #0000ff;">="1"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">LinearGradientBrush</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">Grid.Background</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">Grid.ColumnDefinitions</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">ColumnDefinition </span><span style="color: #ff0000;">Width</span><span style="color: #0000ff;">="*"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">ColumnDefinition </span><span style="color: #ff0000;">Width</span><span style="color: #0000ff;">="2*"</span><span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">ColumnDefinition </span><span style="color: #ff0000;">Width</span><span style="color: #0000ff;">="*"</span><span style="color: #0000ff;">/></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">Grid.ColumnDefinitions</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">Grid.RowDefinitions</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">RowDefinition </span><span style="color: #ff0000;">Height</span><span style="color: #0000ff;">="35"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">RowDefinition </span><span style="color: #ff0000;">Height</span><span style="color: #0000ff;">="45"</span><span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">RowDefinition </span><span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">RowDefinition </span><span style="color: #ff0000;">Height</span><span style="color: #0000ff;">="50"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">Grid.RowDefinitions</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">Label </span><span style="color: #ff0000;">Grid.Row</span><span style="color: #0000ff;">="1"</span><span style="color: #ff0000;"> Grid.Column</span><span style="color: #0000ff;">="1"</span><span style="color: #ff0000;"> Content</span><span style="color: #0000ff;">="请选择:"</span><span style="color: #ff0000;"> HorizontalAlignment</span><span style="color: #0000ff;">="Left"</span><span style="color: #ff0000;"> VerticalAlignment</span><span style="color: #0000ff;">="Top"</span><span style="color: #ff0000;"> Foreground</span><span style="color: #0000ff;">="Green"</span><span style="color: #ff0000;"> FontSize</span><span style="color: #0000ff;">="25"</span> <span style="color: #0000ff;">></</span><span style="color: #800000;">Label</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">StackPanel </span><span style="color: #ff0000;">Grid.Row</span><span style="color: #0000ff;">="2"</span><span style="color: #ff0000;"> Grid.Column</span><span style="color: #0000ff;">="1"</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">Button </span><span style="color: #ff0000;">Content</span><span style="color: #0000ff;">="卸载"</span><span style="color: #ff0000;"> IsDefault</span><span style="color: #0000ff;">="True"</span><span style="color: #ff0000;"> HorizontalAlignment</span><span style="color: #0000ff;">="Left"</span><span style="color: #ff0000;"> Margin</span><span style="color: #0000ff;">="10 10"</span><span style="color: #ff0000;"> Height</span><span style="color: #0000ff;">="35"</span><span style="color: #ff0000;"> Width</span><span style="color: #0000ff;">="120"</span><span style="color: #ff0000;"> Style</span><span style="color: #0000ff;">="</span><span style="color: #808000;">{StaticResource BuleBt}</span><span style="color: #0000ff;">"</span><span style="color: #ff0000;"> Background</span><span style="color: #0000ff;">="Tomato"</span><span style="color: #ff0000;"> Command</span><span style="color: #0000ff;">="</span><span style="color: #808000;">{Binding UninstallCommand}</span><span style="color: #0000ff;">"</span> <span style="color: #0000ff;">></</span><span style="color: #800000;">Button</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">Button </span><span style="color: #ff0000;">Content</span><span style="color: #0000ff;">="修复"</span><span style="color: #ff0000;"> IsDefault</span><span style="color: #0000ff;">="True"</span><span style="color: #ff0000;"> HorizontalAlignment</span><span style="color: #0000ff;">="Left"</span><span style="color: #ff0000;"> Margin</span><span style="color: #0000ff;">="10 10"</span><span style="color: #ff0000;"> Height</span><span style="color: #0000ff;">="35"</span><span style="color: #ff0000;"> Width</span><span style="color: #0000ff;">="120"</span><span style="color: #ff0000;"> Style</span><span style="color: #0000ff;">="</span><span style="color: #808000;">{StaticResource BuleBt}</span><span style="color: #0000ff;">"</span><span style="color: #ff0000;"> Command</span><span style="color: #0000ff;">="</span><span style="color: #808000;">{Binding RepairCommand}</span><span style="color: #0000ff;">"</span> <span style="color: #0000ff;">></</span><span style="color: #800000;">Button</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">StackPanel</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">TextBlock </span><span style="color: #ff0000;">Grid.Row</span><span style="color: #0000ff;">="3"</span><span style="color: #ff0000;"> Foreground</span><span style="color: #0000ff;">="Gray"</span><span style="color: #ff0000;"> Grid.Column</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> Padding</span><span style="color: #0000ff;">="5 0 0 0"</span><span style="color: #ff0000;"> VerticalAlignment</span><span style="color: #0000ff;">="Center"</span><span style="color: #ff0000;"> Grid.ColumnSpan</span><span style="color: #0000ff;">="2"</span><span style="color: #ff0000;"> TextDecorations</span><span style="color: #0000ff;">="</span><span style="color: #808000;">{x:Null}</span><span style="color: #0000ff;">"</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">Label </span><span style="color: #ff0000;">Content</span><span style="color: #0000ff;">="登陆官网了解更多:"</span><span style="color: #ff0000;"> VerticalContentAlignment</span><span style="color: #0000ff;">="Bottom"</span><span style="color: #ff0000;"> FontSize</span><span style="color: #0000ff;">="12"</span><span style="color: #ff0000;"> Margin</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> Padding</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> Foreground</span><span style="color: #0000ff;">="Gray"</span> <span style="color: #0000ff;">></</span><span style="color: #800000;">Label</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">Hyperlink </span><span style="color: #ff0000;">NavigateUri</span><span style="color: #0000ff;">="</span><span style="color: #808000;">{Binding WebSite }</span><span style="color: #0000ff;">"</span><span style="color: #ff0000;"> RequestNavigate</span><span style="color: #0000ff;">="Hyperlink_OnRequestNavigate"</span> <span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">Label </span><span style="color: #ff0000;">Content</span><span style="color: #0000ff;">="</span><span style="color: #808000;">{Binding WebSite}</span><span style="color: #0000ff;">"</span><span style="color: #ff0000;"> VerticalContentAlignment</span><span style="color: #0000ff;">="Bottom"</span><span style="color: #ff0000;"> FontSize</span><span style="color: #0000ff;">="12"</span><span style="color: #ff0000;"> Margin</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> Padding</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> Foreground</span><span style="color: #0000ff;">="Gray"</span> <span style="color: #0000ff;">></</span><span style="color: #800000;">Label</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">Hyperlink</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">TextBlock</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">Grid</span><span style="color: #0000ff;">></span></pre>