我已阅读所有帖子,他们可能是我的问题的答案,但我并不完全掌握这个概念所以我问我的问题,希望有一个简单的答案。我想从文本块中检索文本并将其提供给我的文本到语音代码。
需要帮助的代码是:
if (DataContext == null)
{
string selectedIndex = "";
if (NavigationContext.QueryString.TryGetValue("selectedItem", out selectedIndex))
`enter code here` {
int index = int.Parse(selectedIndex);
DataContext = App.ViewModel.Items[index];
string saythis = "*here is where my question comes in - how do I get the string from the TextBlock in ControlPanel?*"
Speaker(saythis);
saythis = "here is where my question comes in - how do I get the string from the TextBlock in ControlPanel2?"
Speaker(saythis);
}
}
}
async void Speaker(string words)
{
SpeechSynthesizer synth = new SpeechSynthesizer();
await synth.SpeakTextAsync(words);
}
来自Databound模型的XAML是:
<!--TitlePanel contains the name of the application and page title-->
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock Text="Gr8Oz software" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock Text="{Binding Heading}" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<!--ContentPanel contains details text. Place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<TextBlock Text="{Binding Login}" TextWrapping="Wrap" Style="{StaticResource PhoneTextNormalStyle}"/>
</Grid>
<Grid x:Name="ContentPanel2" Margin="12,123,12,10" Grid.RowSpan="2">
<TextBlock Text="{Binding Password}" TextWrapping="Wrap" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,10,12,0" Grid.ColumnSpan="2" Grid.RowSpan="2"/>
</Grid>
答案 0 :(得分:0)
不确定我是否真的理解了这个问题,但如果只是关于如何从这些特定的TextBlock中获取文本,为什么不简单地设置x:Name
然后在代码中访问相应的成员:
<Grid ...>
<TextBlock x:Name="textBlock1" Text="{Binding Login}" ..../>
</Grid>
<Grid ...>
<TextBlock x:Name="textBlock2" Text="{Binding Password}" .../>
</Grid>
在代码中:
var firstText = textBlock1.Text;
var secondText = textBlock2.Text;
但是,由于两个TextBlocks的Text
属性绑定到某些属性Login
和Password
,为什么不直接从这些属性中获取文本?