C# 我怎么可能有一个在第一个位置有空项的十进制组合框?

C# 我怎么可能有一个在第一个位置有空项的十进制组合框?,c#,wpf,combobox,C#,Wpf,Combobox,我有一个组合框,我想绑定到十进制?值,因此我有以下代码: 在我的视图模型的构造函数中: Points.Add(null); decimal myPoint = 0; while (myPoint <= 10) { Points.Add(myPoint); myPoint = myPoint + 0.5m; } Points.Add(空); 小数点=0; (myPoint对于第一个问题,设置ItemTemplate属性: <ComboBox ...

我有一个组合框,我想绑定到十进制?值,因此我有以下代码:

在我的视图模型的构造函数中:

Points.Add(null);
decimal myPoint = 0;
while (myPoint <= 10)
{
    Points.Add(myPoint);
    myPoint = myPoint + 0.5m;
}
Points.Add(空);
小数点=0;

(myPoint对于第一个问题,设置ItemTemplate属性:

<ComboBox ...
          ItemsSource="{Binding Points}"
          SelectedItem="{Binding PointsSelectedItem}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding}"/>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

Clemens完美地回答了第一个问题。因此我将集中讨论第二个问题。由于根据
选择器的源代码,
null
不是一个可选项,因此您不能选择值为
null
的项。但您可以简单地创建一个包装类,该类拥有一个
decimal?
属性,如下面所示把这个作废

public class MyPoint
{
    public decimal? Point { get; set; }

    public MyPoint(decimal? value)
    {
        Point = value;
    }
}
使用
MyPoint
而不是
decimal?
,并将xaml更改为

<ComboBox ...
          ItemsSource="{Binding Points}"
          SelectedItem="{Binding PointsSelectedItem}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Point}"/>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

那么你应该得到你想要做的

public class MyPoint
{
    public decimal? Point { get; set; }

    public MyPoint(decimal? value)
    {
        Point = value;
    }
}
<ComboBox ...
          ItemsSource="{Binding Points}"
          SelectedItem="{Binding PointsSelectedItem}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Point}"/>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>