2011-03-01 23 views
5

に設定されているとき、私は、このXAMLテキストボックスこのプロパティこれにバインドさWPF TargetNullValueは、テキストボックスのは、バインディングがOneWayToSource

<TextBox Text="{Binding ProdFilter.Min, Mode=OneWayToSource, 
    UpdateSourceTrigger=PropertyChanged, TargetNullValue=''}" 
    Width="50" DockPanel.Dock="Right" TabIndex="3" /> 

を持っている値を返す:

 public double? Min 
     { 
      get { return min; } 
      set 
      { 
       if (value == null) 
        value = 0; 
       min = value; 
       OnPropertyChanged("Min"); 
      } 
     } 

私が持っている問題は、プログラムの起動時ということですまたはユーザーがテキストをクリアすると、テキストボックスのテキストは "0"に設定されます。私はOneWayToSourceを使用しているので、この動作が正しいかどうかは分かりませんが、テキストが空の場合(そしてテキストが空の場合はnullに設定されています)

アイデアはありますか?ありがとう!

+0

私はあなたの財産を理解していません。 'null'に設定されていないときにnullを使用できるのはなぜですか?なぜ普通の「ダブル」を使用しないのですか? –

+0

今、私は通常のダブルを使用しています...その日、ハハハハを何とか覚えていない! –

答えて

6

これは、バインディングがOneWayToSourceであってもWPFが値を設定した後にプロパティから値を再読み取りするためです。可能な回避策については、this questionへの回答を参照してください。

+0

+1私たちはまったく同じことに答えているようです:)私の答えを削除.. –

+0

この動作は.NET 4.0で導入されました –

+0

@Meleak - ええ、私が参照している大きな質問ありがとう: ) –

関連する問題