导航后,usercontrol上的文本会被加扰

时间:2016-07-06 16:54:57

标签: c# wpf xaml user-controls

我有一个相当标准的WPF应用程序。我有一个窗口,里面有导航框架,我加载页面。我的所有页面都有一个类似的模板,右下角是用户控件,这是导航菜单。

偶尔(我无法检测到它的模式)usercontrol中的一些TextBlock会出现乱码,无论是说明一个完全限定的类,另一个是字符串,还是什么都没有。

这应该是这样的: enter image description here

这是一分钟前的样子: enter image description here

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>

它几乎看起来像一个指针问题,它将转向错误的对象以获取要显示的字符串值。

1 个答案:

答案 0 :(得分:0)

请考虑仔细查看您的MenuDefault样式,并在此处发布。那里有绑定或触发器吗?如果您将Text属性绑定到该类型的对象,则可能会出现此行为。否则,xaml或代码隐藏中还有其他任何引用这些TextBlocks的内容吗?根据您发布的内容,我没有看到任何理由为什么TextBlock的Text属性不是您指定的内容。

要更好地调试此问题,请考虑安装Snoop并将Visual Tree导航到该TextBlock。然后,您可以检查TextBlock的属性。