簡體   English   中英

WPF C#雙向數據綁定不起作用

[英]WPF C# Two-Way Data Bind Not Working

我知道這個問題與其他問題相似,但是其他問題在我的情況下沒有起作用。 我正在嘗試將WPF中的文本框雙向綁定到XML文件。

數據完美地進入了文本框,但是當我編輯文本框時,XML文件從未更改。 根據我在網上找到的信息,我的代碼似乎應該可以工作。 這里是:

MainWindow.xaml

<Window x:Class="Learning_0._002.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Main Window" 
    WindowStartupLocation="CenterScreen"
  Height="400" Width="950">
<Grid>
    <Grid.Resources>
        <XmlDataProvider x:Key="BusinessInfo" Source="BusinessData.xml" XPath="/Businesses/Business"/>
    </Grid.Resources>
    <Grid x:Name="BusinessInfo" DataContext="{StaticResource BusinessInfo}">

        <TextBox Name="Name" Grid.Row="0" Grid.Column="1" Text="{Binding XPath=@Name,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Margin="106,93,717,250"/>
    </Grid>
</Grid>

BusinessData.xml

<?xml version="1.0" encoding="utf-8" ?>
<Businesses>
  <Business Name="Sample Company" Address="1234 East Road St. City, California 90068" Phone="555-555-5555" Fax="555-555-5556" Email="myemail@example.net" Website="www.example.com"/>
</Businesses>

我是新手,無法找到我的錯誤。 任何更正表示贊賞!

這是一個與您的問題非常相似的問題-WPF雙向綁定XML

看起來您需要做的是代替使用Grid.Resources需要使用數據上下文。 如果您要進行更高級的工作,建議您使用一個類,其中包含UI元素后面的所有數據。 查看此MSDN以獲取更多信息-http://msdn.microsoft.com/zh-cn/library/ms743695(v=vs.110).aspx

<Grid.DataContext> <XmlDataProvider x:Name="XMLData" Source="BusinessData.xml" XPath="/Businesses/Business"/> </Grid.DataContext> <Grid x:Name="BusinessInfo" Margin="98,49,118,144"> <TextBox Name="Name" Text="{Binding XPath=@Name, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" TextChanged="Name_TextChanged" /> </Grid>

然后在C#中,只要他們在文本框中輸入文本,就將其保存

private void Name_TextChanged(object sender, TextChangedEventArgs e) { XMLData.Document.Save("XMLFile1.xml"); }

您應該知道,保存文件時,它將保存到與運行可執行文件相同的目錄。 當然,您可以更改將其保存為XML實際來源的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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