[英]Property setter trims a value assigned from LINQ, but isn't displayed as such in WPF datagrid
我正在使用LINQ to ODBC将查询结果(保存到XML文件)投影到自定义对象中。 自定义对象具有字符串属性“ PayFrequency”。 如果值不为null,则它的设置器将修剪分配给它的值。 我已经打开了XML文件并确认此文件有效(属性值被修剪)。
但是,当自定义对象反序列化并显示在WPF数据网格中时,我的属性的DataGridComboBoxColumn列值为空白。 列的ItemsSource绑定到字符串的StaticResource,该字符串包括分配给我的自定义对象的PayFrequency属性的值。 那么,为什么我的价值没有显示在数据网格中?
PayFrequency属性:
[XmlElement(IsNullable = true)]
public string PayFrequency
{
get { return this.payFrequency; }
set
{
if (value != this.payFrequency)
{
this.payFrequency = (value ?? value.Trim());
NotifyPropertyChanged("PayFrequency");
}
}
}
WPF datagrid列:
<DataGridComboBoxColumn
Header="Pay Frequency"
SelectedItemBinding="{Binding XLGOCommission.PayFrequency, Mode=TwoWay}"
ItemsSource="{Binding Source={StaticResource xlgoPayFrequencyStrings}}" />
WPF datagrid列的ItemsSource:
<x:Array Type="{x:Type sys:String}" x:Key="xlgoPayFrequencyStrings">
<sys:String>APM</sys:String>
<sys:String>APQ</sys:String>
<sys:String>OD</sys:String>
<sys:String>NP</sys:String>
</x:Array>
重要的一点:如果我在LINQ查询中修剪该值,而不是让自定义对象的setter属性对其进行处理,则该值会正确显示在WPF datagrid列中。 但是,就像我说的那样,当我查看序列化为XML的自定义对象时,属性值中没有空格。
这是我的创可贴修复程序(摘录自我的LINQ查询):
PayFrequency = xcom["pay_freq"].ToString().Trim()
谢谢你的帮助! 我宁愿将对分配给我的自定义对象的值的操作封装在对象本身中,而不是“清白”其他地方的值!
这行是不正确的。 它只会尝试修剪value
null的值,这将生成运行时异常...
this.payFrequency = (value ?? value.Trim());
仅当它不为null时修剪它的一种方法是改用三元运算符...
if (value != this.payFrequency)
{
this.payFrequency = (value == null ? "" : value.Trim());
NotifyPropertyChanged("PayFrequency");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.