[英]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.