我有一个相当标准的WPF应用程序。我有一个窗口,里面有导航框架,我加载页面。我的所有页面都有一个类似的模板,右下角是用户控件,这是导航菜单。
偶尔(我无法检测到它的模式)usercontrol中的一些TextBlock会出现乱码,无论是说明一个完全限定的类,另一个是字符串,还是什么都没有。
userControl的XAML代码是
<Grid Background="Transparent">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Name="spNavigation" VerticalAlignment="Center" Margin="0,0,18,0">
<TextBlock Text="N....N - 5" MouseUp="TextBox_MouseUp" Name="tbStockNav" Style="{StaticResource MenuDefault}"/>
<TextBlock Text="Orders" MouseUp="TextBox_MouseUp" Name="tbPatientsNav" Style="{StaticResource MenuDefault}"/>
<TextBlock Text="Recalls" MouseUp="TextBox_MouseUp" Name="tbRecallNav" Style="{StaticResource MenuDefault}"/>
<TextBlock Text="Messages" MouseUp="TextBox_MouseUp" Name="tbMessagesNav" Style="{StaticResource MenuDefault}"/>
<TextBlock Text="Users" MouseUp="TextBox_MouseUp" Name="tbUsersNav" Style="{StaticResource MenuDefault}"/>
<TextBlock Text="Home" MouseUp="TextBox_MouseUp" Name="tbHomeNav" Style="{StaticResource MenuDefault}"/>
</StackPanel>
还有一些用于加载新页面的相关代码。它非常简单,我不能为我的生活弄清楚为什么我的文字会出现乱码。
private void TextBox_MouseUp(object sender, MouseButtonEventArgs e)
{
string text = (sender as TextBlock).Text;
openWindow(text);
}
private void openWindow(string text)
{
NavigationService navigationService = NavigationService.GetNavigationService(this);
if (text == "Users")
{
navigationService.Navigate(new Uri("Pages/UsersPage.xaml", UriKind.Relative));
}
我很想知道如何修复它,以及为什么会发生这种情况。
提前致谢。
编辑:从依赖项属性中删除文本框(背景颜色和填充除外):
int offset = Convert.ToInt16(Application.Current.TryFindResource("MenuOffset"));
activeTB.Background = BACKGROUND_COLOR;
activeTB.Padding = new Thickness(12,12+offset,12,12);
activeTB.Margin = new Thickness(0,-1*offset,0,0);
风格很简单......
<Style x:Key="MenuDefault" TargetType="{x:Type TextBlock}">
<Setter Property="FontSize" Value="19"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="Margin" Value="12"/>
</Style>
它几乎看起来像一个指针问题,它将转向错误的对象以获取要显示的字符串值。
答案 0 :(得分:0)
请考虑仔细查看您的MenuDefault样式,并在此处发布。那里有绑定或触发器吗?如果您将Text属性绑定到该类型的对象,则可能会出现此行为。否则,xaml或代码隐藏中还有其他任何引用这些TextBlocks的内容吗?根据您发布的内容,我没有看到任何理由为什么TextBlock的Text属性不是您指定的内容。
要更好地调试此问题,请考虑安装Snoop并将Visual Tree导航到该TextBlock。然后,您可以检查TextBlock的属性。