2014-01-25 43 views
0

根據語句綁定xml時更改數據的最佳方法是什麼? 例如,如果「方向」是「N」,那麼「北」等等。根據語句綁定時更改數據

這是我的C#:

XElement Xmlwater = XElement.Parse(e.Result); 

listBox3.ItemsSource = from WindInfo in Xmlwater.Descendants("Wind") 
     select new WindDirection 
{ 
     Direction = WindDirection.Element("direction").Value, 
}; 

這是XML:

<Wind> 
    <direction>N</direction> 
</Wind> 

預先感謝您!

回答

1

有兩種可能的方法:

您可以修改您的LINQ查詢做轉型:

listBox3.ItemsSource = from WindInfo in Xmlwater.Descendants("Wind") 
    select new WindDirection 
    { 
     Direction = MapValue(WindDirection.Element("direction").Value), 
    }; 

2.你可以實現一個IValueConverter

public class WindDirectionConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, 
          object parameter, CultureInfo culture) 
    { 
     return MapValue(value.ToString()); 
    } 

    public object ConvertBack(object value, Type targetType, 
           object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

您可以將此轉換器添加到您的綁定表達式中:

<Page.Resources> 
    <conv:WindDirectionConverter" x:Key="WindDirectionConverter" /> 
</Page.Resources> 

<TextBlock Text="{Binding Direction, 
        Converter={StaticResource WindDirectionConverter}}" /> 

在這兩種情況下,我假設你有一個MapValue功能,確實值映射爲您提供:

public string MapValue(string original) 
{ 
    if (original == "N") 
    { 
     return "North"; 
    } 
    // other conversions 
    return original; 
} 
+0

非常感謝你非常。這真的有幫助! – user3147928