1

小数点以下2桁のテキストボックスに小数点を表示したい。ページが読み込まれると、テキスト ボックスの値が 2 つの小数 ("0.00") で表示されます。値を 10 に変更すると、10 と表示されます。「10.00」と表示するにはどうすればよいですか

以下は私のコンバーターです。

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {

        decimal convertedBudget;
        if (value == null)
        {
            convertedBudget = 0.0M;
        }
        else
        {
            convertedBudget = (decimal)value;
        }
        return string.Format("{0:#,0.00}", Math.Round(convertedBudget, 2));
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        decimal convertedBudget = 0;
        if(value!=null && !string.IsNullOrEmpty(value.ToString()))
        {
           convertedBudget =  System.Convert.ToDecimal(value.ToString());
        }
        return Math.Round(convertedBudget, 2);
    }

前もって感謝します

4

1 に答える 1

0

これは必要ありません。ValueConverterバインドTextBox.Textして、それ自体decimalで文字列フォーマットを使用するだけTextBoxです。テキストを入力した後に値を更新する場合は、適切なイベントをキャプチャして変更します。

<UserControl x:Class="SilverlightApplication2.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400"
xmlns:local="clr-namespace:SilverlightApplication2">
<UserControl.DataContext>
    <local:VM x:Name="VM"/>
</UserControl.DataContext>
    <Grid x:Name="LayoutRoot" Background="White">
    <TextBox Text="{Binding MyValue, Mode=TwoWay, StringFormat=\{0:0.00\}}" LostFocus="TextBox_LostFocus_1" />
    <Slider HorizontalAlignment="Left" Margin="75,189,0,0" VerticalAlignment="Top" Value="{Binding MyValue, Mode=TwoWay}" Width="293"/>
</Grid>


public partial class MainPage : UserControl
{
    public MainPage()
    {
        InitializeComponent();
    }

    private void TextBox_LostFocus_1(object sender, RoutedEventArgs e)
    {
        var v = (VM)this.DataContext;
        v.MyValue = Convert.ToDecimal(((TextBox)sender).Text);
    }
}

public class VM : INotifyPropertyChanged
{
    public VM()
    {

    }

    private decimal myValue;
    public decimal MyValue
    {
        get { return myValue; }
        set { myValue = value; OnChanged("MyValue"); }
    }


    public event PropertyChangedEventHandler PropertyChanged;
    private void OnChanged(string pName)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(pName));
    }
}
于 2013-03-15T12:48:21.983 に答える