XAML中的XElement对话

时间:2014-10-31 02:13:50

标签: c# xaml linq-to-xml

我的问题是:

我需要将最后一个属性(此处, XElement("允许",""))绑定到DataGrid。

policy_zone then1 = new policy_zone("TRUST", "UNTRUST", new policy("100", new Match_Policy("any", "any", "any"), new XElement("permit", "")));

直到它有这样的形式(我需要这个形式才能使用XmlSerialization形成Xml):

<permit></permit>

fr-zone |to-zone| Name |Src-addr|dst-addr| Appl |  Action
-------------------------------------------------------------------
TRUST   |UNTRUS | 100  |  any   |  any   |  any | <permit></permit>
DMZ     |Limpopo| 200  |  any   |  any   |  any | <deny></deny>

但现在我需要将其转换为这种形式(并在XAML中执行此操作):

permit

我理解它是如何单独完成的:

        string xmlSTR = "<permit></permit>";
        txt.Text = XElement.Parse(xmlSTR).Name.ToString();

输出:

        permit

但我不明白,我怎么能这样做适用于我的XAML。这里,

 <DataGridTextColumn x:Name="action" Binding="{Binding  policy.new XElement.Parse(then).Name.ToString()}" Header="Action" Width="80"/>

此条目错误。没有预期的结果。请帮忙/

1 个答案:

答案 0 :(得分:1)

您可以使用转换器

    Binding = "{Binding xmlStr, Converter={StaticResource ParseConverter}}"

转换器是,

    public class ParseConverter : IValueConverter
{

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {

        if (!string.IsNullOrEmpty((string)value))
        {
            return XElement.Parse((string)value).Name.ToString();
        }
        return value;

    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {

        return value;

    }
}