0

いくつかの値を持つ ComboBox があり、一度に 2 つのことを実行したいと考えています。

これが私の ComboBox で、デフォルト値として 10 を表示し、それを double にバインドしたいですか? 距離プロパティ。

<ComboBox Grid.Row="5" Grid.Column="1"
          SelectedIndex="1"
          SelectedValue="{Binding Distance, Mode=TwoWay, Converter={StaticResource StringToDoubleConverter}}">
    <ComboBoxItem>1</ComboBoxItem>
    <ComboBoxItem IsSelected="True">10</ComboBoxItem>
    <ComboBoxItem>100</ComboBoxItem>
    <ComboBoxItem>1000</ComboBoxItem>
</ComboBox>

そして、ここにコンバーターがあります:

public class StringToDoubleConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        return null;
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        ComboBoxItem item = value as ComboBoxItem;

        if (item != null)
        {
            double d;
            if (double.TryParse(item.Content.ToString(), out d))
                return d;
        }

        return null;
    }
}

問題は、このコードでは、選択した項目 10 がアプリケーションの開始時に表示されないことです。コンバーターで行を削除すると、選択したアイテム10が表示されますが、ダブルにバインドできませんか? 距離プロパティ。Convert.ToDouble(combobox1.SelectedValue)... のようなコードビハインドを書きたくありません。

両方を機能させるにはどうすればよいですか?

4

1 に答える 1