.NET 4.5 に関連する非常に奇妙な問題があります。今日、あるユーザーから、浮動小数点数 (「2.75」など) をテキストボックスに入力できないと言われました。テキスト ボックスは、"." を受け入れません。これは、私のカルチャ ("de-CH") の浮動小数点数の正しい 'セパレータ' です。
この問題は、ソフトウェアを .NET 4.5 (以前は 4.0) でコンパイルした後に発生しました。
このエラーを再現できます。アプリケーション内の他のすべてのテキスト ボックスは正常に機能しています。テキストボックスは通常の WPF コントロールです。ファンシーなユーザー定義コントロールなどはありません。
繰り返しますが、テキストボックスは「.」を受け入れません。キャラクターとして。完全に無視されているようです。他のすべての文字 (「@」などの特殊文字も) は問題ありません。.NET 4.0 でアプリケーションを再コンパイルすると、問題が解決します。
テキストボックスの xaml は次のとおりです。
<TextBox x:Name="_Hours" Grid.Row="9" Grid.Column="1" VerticalAlignment="Center"
TextAlignment="Center" FontWeight="Bold" FontSize="16" Text="{Binding ProcessHours,
Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" TextChanged="Hours_TextChanged" />
ProcessHours の定義:
partial class ProjectTask
{
...
public double TotalProcessHours { get { return ProjectBookings.Sum(b =>
b.ProcessHours); }}
...
}
Hours_TextChanged は:
private void Hours_TextChanged(object sender, TextChangedEventArgs e)
{
UpdateHoursValidity();
}
UpdateHoursValidity() は、テキスト メッセージを実際のテキスト ボックスの下にフェードアウトするだけです。「壊れた」テキストボックスとはまったく関係ありません。
private void UpdateHoursValidity()
{
string key = IsInvalidHoursWarning ? "ShowWarningStoryboard" :
"HideWarningStoryboard";
var storyboard = FindResource(key) as Storyboard;
if(storyboard != null) storyboard.Begin();
}
したがって、ここでも空想は何もありません。
私がこれまでに試したこと: - テキストボックスの削除、再コンパイル、テキストボックスの追加、再コンパイル -> 同じ状況
特にxamlでテキストボックスのLanguageプロパティを設定する(Language = de-CH)
これらのヒントに従ってカルチャを設定する: C# アプリケーション全体のデフォルトのカルチャ情報を設定する方法
このブログ投稿に従ってカルチャを設定する: http://www.west-wind.com/weblog/posts/2009/Jun/14/WPF-Bindings-and-CurrentCulture-Formatting
「.」を入力しようとすると、デバッグコンソールにメッセージが表示されません。
これに関するアイデアはありますか?
前もって感謝します!