显示SelectedItems属性

时间:2014-07-31 20:55:44

标签: c# wpf

所以我为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());
}

我试图在不使用viewmodel的情况下实现它!如果我在Messagebox中放置一个断点并将光标放在selectedItem上,那么它将显示属性paymentNo-date-payment-principle-interest-balance。我需要的唯一价值是PaymentNo

希望它会像这样

MessageBox.Show(AmortGrid.SelectedItem.PaymentNo.ToString());

3 个答案:

答案 0 :(得分:3)

当你像这样打电话给ToString()时,你会得到班级类型的名称,这就是你所看到的。

如果这是Paymentinfo的集合,请首先将SelectedItem强制转换回该类型:

MessageBox.Show(((Paymentinfo)AmortGrid.SelectedItem).PaymentNo.ToString());

FWIW,我会重新考虑ViewModel。如果从代码隐藏中获取代码,则更容易测试代码。

您可以将SelectedItem直接绑定到ViewModel中的某个属性(可能称为SelectedPaymentinfo),然后就不会乱码了。

答案 1 :(得分:2)

您也可以设置SelectedValuePath,而不是使用SelectedItem使用SelectedValue

答案 2 :(得分:2)

在PaymentInfo上创建一个ToString()方法。

public class Paymentinfo
{
   public override string ToString()
   {
       return PaymentNo.ToString();
   }
}