<Window x:Class="CrazyCoder.Views.SpeechWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="语音助手" Height="500" Width="700" WindowStartupLocation="CenterScreen">
<Window.Resources>
<Style x:Key="GroupBorder" TargetType="Border">
<Setter Property="BorderBrush" Value="#D0D0D0"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Margin" Value="0,0,0,6"/>
</Style>
<Style x:Key="SectionTitle" TargetType="TextBlock">
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Margin" Value="4,3"/>
<Setter Property="FontSize" Value="13"/>
</Style>
<Style x:Key="ConfigLabel" TargetType="TextBlock">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Margin" Value="4,2"/>
</Style>
<Style x:Key="ActionButton" TargetType="Button">
<Setter Property="Height" Value="34"/>
<Setter Property="Margin" Value="2"/>
<Setter Property="Padding" Value="12,0"/>
<Setter Property="FontSize" Value="13"/>
</Style>
</Window.Resources>
<Grid Margin="8">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!-- 语音设置 -->
<Border Grid.Row="0" Style="{StaticResource GroupBorder}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Text="语音设置" Style="{StaticResource SectionTitle}"/>
<Grid Grid.Row="1" Margin="4,0,4,2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="语音角色" Style="{StaticResource ConfigLabel}" Width="70"/>
<ComboBox Grid.Column="1" ItemsSource="{Binding Voices}"
SelectedIndex="{Binding SelectedVoiceIndex}"
Height="28" Margin="2"/>
</Grid>
<Grid Grid.Row="2" Margin="4,0,4,4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="音量" Style="{StaticResource ConfigLabel}" Width="40"/>
<Slider Grid.Column="1" Minimum="0" Maximum="100"
Value="{Binding Volume}" Margin="4,0"
TickFrequency="10" IsSnapToTickEnabled="True"
VerticalAlignment="Center"/>
<TextBlock Grid.Column="2" Text="{Binding Volume, StringFormat={}{0}}"
Style="{StaticResource ConfigLabel}" Width="40"
TextAlignment="Center"/>
<TextBlock Grid.Column="0" Text="语速" Style="{StaticResource ConfigLabel}" Width="40"
Grid.ColumnSpan="2" Visibility="Collapsed"/>
<TextBlock Grid.Column="2" Text="语速" Style="{StaticResource ConfigLabel}" Width="40"
Margin="8,2,2,2"/>
<Slider Grid.Column="3" Minimum="-10" Maximum="10"
Value="{Binding Rate}" Margin="4,0"
TickFrequency="1" IsSnapToTickEnabled="True"
VerticalAlignment="Center"/>
<TextBlock Grid.Column="4" Text="{Binding Rate, StringFormat={}{0}}"
Style="{StaticResource ConfigLabel}" Width="40"
TextAlignment="Center"/>
</Grid>
</Grid>
</Border>
<!-- 文本输入 -->
<Border Grid.Row="1" Style="{StaticResource GroupBorder}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Text="朗读文本" Style="{StaticResource SectionTitle}"/>
<TextBox Grid.Row="1" Text="{Binding SpeakText, UpdateSourceTrigger=PropertyChanged}"
AcceptsReturn="True" AcceptsTab="True"
VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"
FontFamily="Consolas" FontSize="14"
BorderThickness="0" Margin="4"
MinHeight="100"/>
</Grid>
</Border>
<!-- 操作按钮 -->
<Border Grid.Row="3" Style="{StaticResource GroupBorder}" Padding="4">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<Button Content="朗读" Command="{Binding SpeakCommand}"
Style="{StaticResource ActionButton}" Width="100"/>
<Button Content="停止" Command="{Binding StopCommand}"
Style="{StaticResource ActionButton}" Width="100"/>
<Button Content="保存为 WAV" Command="{Binding SaveWavCommand}"
Style="{StaticResource ActionButton}" Width="120"/>
</StackPanel>
</Border>
</Grid>
</Window>
|