gpt4 book ai didi

wpf - 在 wpf mvvm 中使用 xml

转载 作者:行者123 更新时间:2023-12-03 10:38:39 27 4
gpt4 key购买 nike

我有一个模型

private XmlDataProvider _xmlProvider;
public XmlDataProvider XmlProvider
{
get { return _xmlProvider; }
set { _xmlProvider = value; OnPropertyChanged("XmlProvider"); }
}

在模型构造函数中,我读取了一个 xml 文件
var doc = new System.Xml.XmlDocument();
doc.Load("books.xml");

XmlProvider = new XmlDataProvider()
{
Document = doc,
XPath = @"/root"
};

xml 文件只有一个根和 1 个元素
<proba author="probaauthor"/>

在 View 模型中,我引用了模型
private Model _model;
public Model Model
{
get { return _model; }
set
{
_model = value;
OnPropertyChanged("Model");
}
}

在 View 中:
xmlns:localMvvmxml="clr-namespace:MvvmSamples.Mvvm.SimpleXml"

<Grid.Resources>
<localMvvmxml:ViewModel x:Key="MyXmlProvider"/>

在下面我有一个带有文本框的堆栈面板
<StackPanel Orientation="Horizontal" DataContext="{StaticResource MyXmlProvider}" Margin="5">
<TextBox Text="{Binding XPath=/root/proba/@author}" Width="113"></TextBox>

当然它不起作用,因为我无法联系到提供商。
那么在TextBox Binding中写什么呢?

谢谢。
查理

最佳答案

我猜你的 View 可能没有绑定(bind)到你的 View 模型。我猜您在执行 {Binding XPath=(location)} 时不知道您的 View 正在使用 Viewmodel 进行绑定(bind)。

这可能有助于记住您的代码的命名空间声明可能会有所不同。

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:MvvmSamples.Mvvm.ViewModels"
xmlns:vw="clr-namespace:MvvmSamples.Mvvm.View">

<DataTemplate DataType="{x:Type vm:SimpleXMLViewModel}">
<vw:SimpleXML />
</DataTemplate>

还要记住一个很好的 MVVM 示例: http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

关于wpf - 在 wpf mvvm 中使用 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14387375/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com