显示selecteitem 's属性
本文关键字:属性 selecteitem 显示 | 更新日期: 2023-09-27 18:15:49
所以我为DataGrid启用了右键选项。我想只显示选中项的一个属性,但它的行为不像我想的那样。它显示我的命名空间和额外的。
public class Paymentinfo
{
public int PaymentNo { get; set; }
public String Date { get; set; }
public double Payment { get; set; }
public double Principle { get; set; }
public double Interest { get; set; }
public double Balance { get; set; }
}
private void MenuItem_OnClick(object sender, RoutedEventArgs e)
{
MessageBox.Show(AmortGrid.SelectedItem.ToString());
}
我正试图实现这一点,而不使用视图模型!如果我在Messagebox所在的位置放置一个断点,并将光标放在selectedItem上,那么它将显示属性paymentNo-date-payment-principle-interest-balance。我需要的唯一值是PaymentNo
希望它是这样的
MessageBox.Show(AmortGrid.SelectedItem.PaymentNo.ToString());
当您这样调用ToString()
时,您将获得类类型的名称,即您所看到的。
如果是Paymentinfo
的集合,先将SelectedItem
转换回该类型:
MessageBox.Show(((Paymentinfo)AmortGrid.SelectedItem).PaymentNo.ToString());
FWIW,我会重新考虑ViewModel
。如果您将代码从代码隐藏中取出,那么测试代码要容易得多。
你可以将你的SelectedItem
直接绑定到ViewModel
的属性(也许叫做SelectedPaymentinfo),然后就不会在cast上搞砸了。
您还可以设置SelectedValuePath,而不是使用SelectedItem使用SelectedValue
为PaymentInfo创建ToString()方法。
public class Paymentinfo
{
public override string ToString()
{
return PaymentNo.ToString();
}
}