【问题标题】:Correct value is not coming on UI from XML in c#正确的值不是来自 c# 中 XML 的 UI
【发布时间】:2026-02-12 22:30:01
【问题描述】:

我有一个 xml 文件,其中有一个这样的条目:

<Item name="ID" value="001" />
char []t_id = new char[25];

我在业务逻辑方面有财产:

 public char[] XID
    {
        get { return this.t_id; }
        set { this.t_id = value; }
    }

绑定到文本框的 UI 端属性:

public string YID
    {
        get
        {
            char[] value = this.Obj.XID;
            return new string(value);
        }
        set
        {
            this.Obj.XID = value.ToCharArray();
        }
    }

在 XMl 解析期间获取 ID 的默认值,如下所示:

case "ID":
this.XID = node.Value.ToCharArray();
break;

问题是当我启动我的应用程序时,我得到 system.char[] 代替值 001。 请告诉我我在哪里做错了,为什么我没有得到正确的价值。

【问题讨论】:

  • 那么pidt_id 之间的关系是什么?您刚刚向我们展示了 sn-ps,但我们不知道它们是如何相互关联的。如果您能提供一个简短但完整的示例来说明问题,那将非常有帮助...
  • 我有长度为 25 的 char 数组,我在业务逻辑端创建了属性 XID,该属性通过 YID 属性调用。这是 UI 属性绑定到文本框文本属性。
  • 这对我们的帮助几乎没有一个简短但完整的示例那么大……完全有可能问题出在您没有向我们展示的代码中。如果您可以帮助我们重现它,我们可以帮助您修复它...

标签: c# xml wpf string properties


【解决方案1】:

XID 属性更改时,您似乎需要使用INotifyPropertyChanged Interface 来更新YID 属性。试试这样的:

public char[] XID
{
    get { return this.t_id; }
    set { this.t_id = value; NotifyPropertyChanged("YID"); }
}

另外,如果您看到的是system.char[] 而不是实际的string,那么我认为您显示的是XID 属性而不是YID 属性。尝试这样的事情:

<TextBlock Text="{Binding YID}" />

【讨论】: