1

我整天都在努力使这项工作正常进行,但似乎我做不到。

我做的第一件事是用系统上安装的声音列表填充一个组合框。一旦组合框正确填充了所有声音,我就无法从组合框中选择任何值。

问题出在哪里?

public class ComboData
{
public int _Id { get; set; }
public string _Name { get; set; }
}

public void accSettings()
{
SpeechSynthesizer speaker = new SpeechSynthesizer();

List<ComboData> ListData = new List<ComboData>();

int a = 1;
foreach (InstalledVoice voice in speaker.GetInstalledVoices())
{
    VoiceInfo info = voice.VoiceInfo;
    ListData.Add(new ComboData { _Id = a, _Name = info.Name });
    a++;
}

VoiceList.ItemsSource = ListData;
VoiceList.DisplayMemberPath = "_Name";
VoiceList.SelectedValuePath = "_Id";

VoiceList.SelectedValue = "1";
}

这是 XAML

<ComboBox x:Name="VoiceList" Margin="10,0,0,0" Width="200" HorizontalAlignment="Left"/>

所有与我的问题相关的 XAML:

<Window x:Class="UltimateParkinson.UltimateView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="CIRENC - Base de Datos" Height="582" Width="830" WindowStartupLocation="CenterScreen" Closed="Window_Closed">
<ContentControl x:Name="content_ajustes" Margin="85,67,15,50" UseLayoutRounding="False" Visibility="Visible">
    <Grid Margin="0" Background="#FFF9F9F9">
        <TabControl x:Name="PreferencesTab" Margin="0" SelectionChanged="PreferencesTab_SelectionChanged">
            <TabItem Header="Accesibilidad">
                <Grid Background="#FFE5E5E5">
                    <TextBlock HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="Desde aquí puedes establecer los ajustes de accesibilidad de la aplicación." VerticalAlignment="Top" FontWeight="Bold"/>
                    <GroupBox Header="Lector de Textos" Margin="10,35,10,0" VerticalAlignment="Top">
                        <Grid Margin="0">
                            <StackPanel Margin="0" Orientation="Vertical">
                                <TextBlock Margin="5" Text="¿Activar el lector de textos?" FontWeight="Bold"></TextBlock>
                                <RadioButton x:Name="readerYes" Margin="10,0,10,0" Content="Si"/>
                                <RadioButton x:Name="readerNo" Margin="10,0,10,0" Content="No"/>
                                <TextBlock Margin="5" Text="¿Qué voz deséa utilizar?" FontWeight="Bold"></TextBlock>
                                <ComboBox x:Name="VoiceList" Margin="10,0,0,0" Width="200" HorizontalAlignment="Left"/>
                                <TextBlock FontSize="11" Margin="15,0,10,0" Text="* Las voces están instaladas en tú sistema y son ajenas a la aplicación."></TextBlock>
                                <TextBlock Margin="5" Text="Velocidad de lectura" FontWeight="Bold"></TextBlock>
                                <ComboBox x:Name="VoicePitch" Margin="10,0,0,15" Width="50" HorizontalAlignment="Left">
                                    <ComboBoxItem Content="-2"/>
                                    <ComboBoxItem Content="-1"/>
                                    <ComboBoxItem Content="0"/>
                                    <ComboBoxItem Content="1"/>
                                    <ComboBoxItem Content="2"/>
                                </ComboBox>
                                <TextBlock Margin="5,0,10,0" Text="*Puedes probar la voz aquí." FontWeight="Bold" FontSize="11"></TextBlock>
                                <StackPanel Orientation="Horizontal" Margin="10,0,10,0">
                                    <TextBlock Text="Texto de prueba." Padding="0,5,0,0"></TextBlock>
                                    <Button Content="Vista Previa" HorizontalAlignment="Left" Padding="5" Margin="10,0,0,10" ></Button>
                                </StackPanel>
                            </StackPanel>
                        </Grid>
                    </GroupBox>
                    <Button x:Name="guardarAcc" Padding="5" Content="Guardar" HorizontalAlignment="Right" Margin="0,0,10,10" VerticalAlignment="Bottom" Click="guardarAcc_Click"/>
                </Grid>
            </TabItem>
        </TabControl>
    </Grid>
</ContentControl>
</Window>
4

1 回答 1

3

accSettings() 是否被多次调用?把断点放在那里看看。如果您单击一个项目,然后再次调用 accSettings(),则组合框将重置为其初始值,并且您的选择将丢失。

于 2013-07-15T14:34:12.237 回答