いくつかの値を持つ 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)... のようなコードビハインドを書きたくありません。
両方を機能させるにはどうすればよいですか?