我有一個很奇怪的與.NET 4.5相關的問題。 今天一個用戶告訴我,他無法在文本框中輸入浮動數字(如「2.75」)。 該文本框不接受「。」,這是我的文化中的浮動數字(「de-CH」)中正確的「分隔符」。.NET 4.5的怪異文本框問題 - no'。'允許
在我使用.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(語言=去CH)
根據這些提示設置文化: how to set default culture info for entire c# application
設置文化根據我這篇文章: http://www.west-wind.com/weblog/posts/2009/Jun/14/WPF-Bindings-and-CurrentCulture-Formatting
上有debugconsole沒有消息,當我試圖進入一個「」。
對此有何意見?
在此先感謝!
向我們展示屬性ProcessHours。是類型Int的屬性?你是否將TextBox綁定到Integer? –
糟糕。我發佈了錯誤的屬性。對於那個很抱歉。謝里登的回答雖然解決了我的問題。但是,無論如何感謝您的幫助! – Mathew
好吧,然後歡呼:) –