显示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());

显示selecteitem 's属性

当您这样调用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();
   }
}