小麥子-WPF學習系列3:一個完整的介面案例
阿新 • • 發佈:2019-02-17
這次看一個大點的程式碼,需要有Grid面板知識,視訊裡面有,這裡對程式碼做個解析。
![先看介面,一個串列埠除錯軟體](https://img-blog.csdn.net/20171128235929942?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjk3MDE3MTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
<Window x:Class="Wpf串列埠通訊程式.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="501.1" Width="733" >
<Grid>
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="118"/>
</Grid .RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="122" MinWidth="122" MaxWidth="200"/>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="157"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="26*"/>
<ColumnDefinition Width="35*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="10*"/>
<RowDefinition Height="20*"/>
<RowDefinition Height="20*"/>
<RowDefinition Height="20*"/>
<RowDefinition Height="20*"/>
<RowDefinition Height="20*"/>
<RowDefinition Height="32*"/>
</Grid.RowDefinitions>
<TextBlock Text="串 口" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,3,10,3" Grid.Row="1" Height="16" Width="35"/>
<TextBlock Text="波特率" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,3,10,3" Grid.Row="2" Height="16" Width="36"/>
<TextBlock Text="檢驗位" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,3,10,3" Grid.Row="3" Height="16" Width="36"/>
<TextBlock Text="資料位" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,3,10,3" Grid.Row="4" Height="16" Width="36"/>
<TextBlock Text="停止位" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,3,10,4" Grid.Row="5" Height="16" Width="36"/>
<ComboBox Name="cbPortName" FontSize="10" Grid.Column="1" Grid.Row="1" Margin="2,1,10,1"/>
<ComboBox Name="cbBaudRate" FontSize="10" Grid.Column="1" Grid.Row="2" Margin="2,1,10,1"/>
<ComboBox Name="cbParity" FontSize="10" Grid.Column="1" Grid.Row="3" Margin="2,1,10,1"/>
<ComboBox Name="cbDataBits" FontSize="10" Grid.Column="1" Grid.Row="4" Margin="2,1,10,1"/>
<ComboBox Name="cbStopBits" FontSize="10" Grid.Column="1" Grid.Row="5" Margin="2,1,10,1"/>
<Ellipse Name="comState" Style="{StaticResource EllipseStyleRed}" Grid.Row="6" HorizontalAlignment="Left"
Width="20" Margin="15,8,0,7"/>
<Button Name="btOpenCom" Content="開啟串列埠" Grid.Column="0" Margin="50,6,10,6" Grid.Row="6" Grid.ColumnSpan="2"
Click="btOpenCom_Click" />
</Grid>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="25"/>
<RowDefinition Height="25"/>
<RowDefinition Height="25"/>
<RowDefinition Height="25"/>
<RowDefinition Height="25"/>
<RowDefinition Height="25"/>
<RowDefinition Height="25"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Button Name="btClearView" Content="清空顯示" Margin="10,5,53,0" Grid.Row="0" Click="btClearView_Click"></Button>
<Button Visibility="Hidden" Content="停止顯示" Grid.Row="1" Margin="10,0,53,0"></Button>
<Button Visibility="Hidden" Content="儲存顯示" Grid.Row="4" Margin="10,0,53,0"></Button>
<Button Visibility="Hidden" Content="更改" Grid.Row="4" Margin="74,0,10,0"></Button>
<Button Visibility="Hidden" Content="搜尋空閒串列埠" Grid.Row="6" Margin="10,2,30,2"></Button>
<CheckBox Visibility="Hidden" Name="ckAutoClear" Content="自動清空" Margin="10,2,0,0" Grid.Row="2" Height="16" VerticalAlignment="Top"/>
<CheckBox Name="ck16View" Content="16進位制顯示" Margin="10,2,0,2" Grid.Row="3" Click="ck16View_Click"/>
</Grid>
</Grid>
<GridSplitter Grid.Column="1" HorizontalAlignment="Stretch" Width="5"/>
<Grid Name="grdSend" Grid.Row="1" Grid.ColumnSpan="3">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="32"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="192"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox TextWrapping="Wrap" Name="tbSend" Grid.Column="1" Margin="3,0,0,0" AcceptsReturn="True" TextChanged="tbSend_TextChanged" Grid.RowSpan="2"></TextBox>
<Rectangle Fill="#FFACACAC" Width="1" HorizontalAlignment="Right" Grid.RowSpan="2"></Rectangle>
<Button Name="btSend" Content="傳送" Margin="118,7,6,55" Click="btSend_Click" VerticalContentAlignment="Top"/>
<Button Name="btExpend" Content="擴充套件" Margin="118,37,6,25" VerticalContentAlignment="Top" Click="btExpend_Click"/>
<CheckBox Name="ck16Send" Content="16進位制傳送" Margin="10,5,100,0" VerticalAlignment="Top" Click="ck16Send_Click"/>
<CheckBox Name="ckAsciiView" Content="顯示Ascii碼" Margin="10,22,90,0" VerticalAlignment="Top" Click="ckAsciiView_Click"/>
<CheckBox Name="ckAdvantechCmd" Content="加回車符傳送" Margin="10,39,90,0" VerticalAlignment="Top" Click="ckAdvantechCmd_Click"/>
<CheckBox Name="ckAutoSend" Content="自動傳送" Margin="10,56,100,0" VerticalAlignment="Top" Click="ckAutoSend_Click"/>
<TextBlock Name="tbkIntervalTime" HorizontalAlignment="Left" Margin="33,74,0,0" TextWrapping="Wrap" Text="間隔(s)" VerticalAlignment="Top" Grid.RowSpan="2"/>
<TextBox Name="tbIntervalTime" HorizontalAlignment="Left" Margin="83,72,0,0" Text="0" VerticalAlignment="Top" Width="50" TextChanged="tbIntervalTime_TextChanged" Grid.RowSpan="2"/>
</Grid>
<TextBox VerticalScrollBarVisibility="Auto" IsReadOnly="True" Name="tbReceive" Grid.Column="2" Margin="0,1,0,0" TextWrapping="Wrap"></TextBox>
<StatusBar Name="statusBar1" Height="20" Grid.Row="3" Grid.ColumnSpan="3" VerticalAlignment="Bottom" Margin="0">
<TextBlock Text="狀態:"></TextBlock>
<TextBlock Name="tbComState" Text="0" MinWidth="150"></TextBlock>
<Separator Background="#FFC9C6C6"/>
<TextBlock></TextBlock>
<TextBlock Text="接收:"></TextBlock>
<TextBlock Name="txtRecive" Text="0" MinWidth="100"></TextBlock>
<Separator Background="#FFC9C6C6"/>
<TextBlock Text="傳送:"></TextBlock>
<TextBlock Name="txtSend" Text="0"></TextBlock>
</StatusBar>
<Separator Height="1" Grid.Row="1" Grid.ColumnSpan="3" Margin="0,0,0,20" VerticalAlignment="Bottom"/>
<Rectangle Fill="#FFACACAC" Grid.Row="1" Grid.ColumnSpan="3" VerticalAlignment="Top" Height="1"/>
<Rectangle Fill="#FFACACAC" Grid.Column="1" Width="1" HorizontalAlignment="Left"/>
<Border Name="bdExpend" BorderBrush="#FFD6D6D6" BorderThickness="1" Margin="1,1,1,1"
Grid.Column="2" HorizontalAlignment="Right" Width="200">
<Grid Name="gdExpend">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10*"/>
<ColumnDefinition Width="67*"/>
<ColumnDefinition Width="23*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Text="Hex" Grid.ColumnSpan="2" VerticalAlignment="Bottom"/>
<TextBlock Text="傳送字串" Grid.Column="1" VerticalAlignment="Bottom" HorizontalAlignment="Center"/>
<TextBlock Text="傳送" Grid.Column="2" VerticalAlignment="Bottom" HorizontalAlignment="Center"/>
</Grid>
</Border>
</Grid>
</Grid>
</Window>