我有问题。我有一个string
品牌,string
型号的汽车类,...
我还有一个包含ComboBox
数据的视图。当我从ComboBox
“carBrand”或ComboBox
“carModel”中选择一个项目并单击按钮时,我想创建一个新的汽车对象。但是,点击该按钮后,carBrand.SelectedValue.ToString()
正在提供Null
值,与carModel相同,但我从ComboBox
中选择了一个项目。
在我的 VMClass:
中Add a1 = new Add();
c_car m1 = param as c_car;
a1.DataContext = m1;
a1.ShowDialog();
if (a1.DialogResult.HasValue && a1.DialogResult.Value)
{
m1.c_brand = a1.carBrand.SelectedValue.ToString(); //causes NullReferenceException
m1.c_model = a1.carModel.SelectedValue.ToString(); //causes NullReferenceException
m1.c_year = a1.carYear.Content.ToString(); //this works perfectly
m1.c_km = Int32.Parse(a1.carKm.Content.ToString()); //this also works properly
//...
}
现在我的查看班级:
<!--CarModel ComboBox-->
<ComboBox x:Name="carModel" Style="{StaticResource combobox}" Grid.Column="1"
Margin="20,15,17,14"
ItemsSource="{Binding ModelSelectedBrand}" DisplayMemberPath="c_model" MouseLeave="carModel_MouseLeave"
Grid.Row="2" VerticalAlignment="Center" Height="30" MouseDoubleClick="carModel_MouseDoubleClick">
</ComboBox>
<!--CarYear EditableLabel-->
<Label x:Name="carYear" Content="{Binding ElementName=carModel, Path=SelectedValue.c_year}" Margin="20,14,17,14"
Style="{StaticResource EditableLabelStyle}" Foreground="White"
Grid.Column="1" Grid.Row="5" VerticalAlignment="Center" Height="30">
</Label>
<!--CarKM EditableLabel-->
<Label x:Name="carKm"
Content="{Binding ElementName=carModel, Path=SelectedItem.c_km}" Style="{StaticResource EditableLabelStyle}"
Margin="20,14,17,14"
Grid.Column="1" Grid.Row="3" Foreground="White" VerticalAlignment="Center" Height="30">
</Label>
我希望有人可以帮我解决这个问题。
提前致谢!
答案 0 :(得分:0)
所以简单的答案(我想,我还没有测试过)就是SelectedValuePath
上没有设置ComboBox
(正如vesan在评论中所述) 。
这意味着SelectedValue
始终为null
。
您可以使用SelectedItem
返回选定的Car
,然后从中获取该属性,或者只在SelectedValuePath
上设置ComboBox
。
现在,使用绑定当然可以做得更好但是,无论你是否想实现它,都取决于你。