簡體   English   中英

屬性設置器會修剪從LINQ分配的值,但在WPF數據網格中不會這樣顯示

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM