私はかなり標準的なWPFアプリケーションを持っています。私はウィンドウを持っていて、ナビゲーションフレームが内部にあり、そこでページを読み込みます。私のすべてのページには、右下にあるUser Control(ナビゲーション)メニューと同様のテンプレートがあります。ユーザーコントロール上のテキストがナビゲーション後にスクランブルされる
時には(私はそれにパターンを検出することができません)usercontrol内のTextBlocksのいくつかは、完全修飾クラス、別の文字列、または全く何も書かれていない文字化けします。
これは分前のように見えたものです:ユーザーコントロールのための
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));
}
私はそれを修正する方法を理解することは興味深いですが、なぜこれも起こっているのです。
ありがとうございます。
EDIT:テキストボックスをしたDependencyPropertyから、背景色とパディングを除いて、変更されることはありません:
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つで 'Frame'と' Pages'を使用していません...標準と思われるものが...私はあなたがCaliburnのようなMVVM Frameworkを使用していないと思います。マイクロなど?すべてのコードビハインドは手続き的だと感じています。あなたの場合は、最初に_tbMessagesNav_のプロジェクト全体を検索し、その 'Text'がどこかで変更されているかどうかを確認してから、VSのVisual Tree Debuggerで特定のTextBlockを調べ、最後に' .Text = ' 'Text'プロパティを変更するものがあるかどうかを確認してください。あなたが経験するものは正常ではありません。 –
私はこのプロジェクトでMVVMフレームワークを使用していません。 textblock.Textプロパティは決して変更されません。これは私が落ち着いている場所です。私はテキストブロック名の名前を変更しようとしましたが、おそらくどこか別の場所で参照されていたかもしれないと思っていましたが、何もしませんでした。 「あなたが経験するものは普通ではありません」したがって、私はここにいるのです; – Drew