1

VS2012 Express に同梱されているデフォルトの WPF リボンを使用しています。
値 1.75 で初期化されたビューモデルで、RibbonTextBox が double プロパティにデータバインドされると、それが表示され、'x' などの非数値文字を入力したときのよう に赤い色でフレーム化することなく、小数点記号の周りの数値を変更できます
。削除すると、RibbonTextBox に入力し直す方法がありません。意味のない文字は受け入れますが、小数点記号は受け入れません。つまり、小数点記号を削除した後は、むしろ int にデータバインドされているように動作します。

XAML

xmlns:rib="http://schemas.microsoft.com/winfx/2006/xaml/presentation/ribbon"
...
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" >
<Label Content="Source Gamma " />
<rib:RibbonTextBox Text="{Binding SrcGamma, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="50"/>
</StackPanel>

C# コード ビハインド

public double SrcGamma { get; set; } // initialised to 1.75d

注 1 : まず、文化の問題ではないかと疑っていました。私の Windows カルチャ (cs-CZ) では小数点記号として「,」を使用していますが、アプリケーションでは「.」と表示されました。セパレーター。
a) Windows カルチャ セパレータを '.' に設定する 役に立ちませんでした。b)この
SO の質問 に従ってアプリケーション ロケールをオーバーライドした後、正しい Windows カルチャ セパレータが表示されますが、入力することもできません。

注 2 : 調査中に、標準の TextBox (リボンの外側) を追加しました。カスタムの二重検証ルールを追加すると、前述の RibbonTextBox とまったく 同じように動作し始めました。

ご提案いただきありがとうございます。

4

1 に答える 1

0

答えはこのSO Articleに隠されていました。

この奇妙な動作は、私が .NET 3.5 で使用していたUpdateSourceTrigger=PropertyChangedが原因で、期待どおりに動作していました。それを削除した後、小数点記号を問題なく追加できるようになりました。

まあ、MS にはこの変更を行う理由があったので、それを心に留めておきましょう。

于 2012-10-08T19:05:09.597 に答える