Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将选定的XML内容绑定到文本框_C#_Wpf_Xaml_Textbox - Fatal编程技术网

C# 将选定的XML内容绑定到文本框

C# 将选定的XML内容绑定到文本框,c#,wpf,xaml,textbox,C#,Wpf,Xaml,Textbox,应打开XML文件,元素应显示在可选择单个元素的列表框中。所选元素应显示在可更改的文本框中 我设法在列表框中打开并显示了XML文件。但是,如何在2TextBoxes中显示所选的XML内容呢 下面是XML文件的内容 <Inventory xmlns=""> <Books> <Book ISBN="0-7356-0562-9" Stock="in" Number="9"> <Title>XML in Act

应打开XML文件,元素应显示在可选择单个元素的
列表框中。所选元素应显示在可更改的
文本框中

我设法在
列表框中打开并显示了XML文件。但是,如何在2
TextBox
es中显示所选的XML内容呢

下面是XML文件的内容

<Inventory xmlns="">
    <Books>
        <Book ISBN="0-7356-0562-9" Stock="in" Number="9">
            <Title>XML in Action</Title>
            <Summary>XML Web Technology</Summary>
        </Book>
        <Book ISBN="0-7356-1370-2" Stock="in" Number="8">
            <Title>Programming Microsoft Windows With C#</Title>
            <Summary>C# Programming using the .NET Framework</Summary>
        </Book>
        <Book ISBN="0-7356-1288-9" Stock="out" Number="7">
            <Title>Inside C#</Title>
            <Summary>C# Language Programming</Summary>
        </Book>
        <Book ISBN="0-7356-1377-X" Stock="in" Number="5">
            <Title>Introducing Microsoft .NET</Title>
            <Summary>Overview of .NET Technology</Summary>
        </Book>
        <Book ISBN="0-7356-1448-2" Stock="out" Number="4">
            <Title>Microsoft C# Language Specifications</Title>
            <Summary>The C# language definition</Summary>
        </Book>
    </Books>
</Inventory>

XML在起作用
XML-Web技术
用C语言编程microsoftwindows#
使用.NET框架进行C#编程
内C#
C语言编程
介绍微软.NET
NET技术概述
Microsoft C#语言规范
C语言定义
下面是MainWindow.xaml的内容

<?xml version="1.0" encoding="utf-8"?>
<Window
    x:Class="XML_View_Edit.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow"
    Width="500"
    Height="200">
    <Window.Resources>
        <XmlDataProvider x:Key="InventoryData"
                         XPath="Inventory/Books"
                         Source="Data.xml"/>
    </Window.Resources>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition
                Height="100" />
            <RowDefinition />
        </Grid.RowDefinitions>
        <ListBox
            Grid.Row="0"
            Name="listBox1" >
            <ListBox.ItemsSource>
                <Binding Source="{StaticResource InventoryData}" XPath="Book"/>
            </ListBox.ItemsSource>
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text = "{Binding XPath=Title}" />
                        <TextBlock Text= " - " />
                        <TextBlock Text = "{Binding XPath=Summary}" />
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
        <Grid
            Grid.Row="1"
             DataContext="listBox1.SelectedItem">
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition
                    Width="70" />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <Label
                Content="Title"
                Grid.Row="0"
                Grid.Column="0"
                Name="label_title" />
            <Label
                Content="Summary"
                Grid.Row="1"
                Grid.Column="0"
                Name="label_summary" />
            <TextBox
                Grid.Column="1"
                Name="textbox_title"
                Grid.Row="0" />
            <TextBox
                Grid.Column="1"
                Name="textbox_summary"
                Grid.Row="1" />
        </Grid>
    </Grid>
</Window>

所选书籍的标题和摘要应显示在2
文本框中,用户可以在其中更改每个值。

大致如下:

  • 将2
    TextBox
    es放在容器
    C1
  • C1.DataContext
    绑定到
    ListBox1.SelectedItem
我不确定在
ListBox1
绑定中
XPath=“*”
会给出什么结果。您可能需要以下内容:

<Binding Source="{StaticResource InventoryData}" XPath="@ISBN"/>
试试看

编辑2: 让我们修复内部网格的绑定:

  DataContext="{Binding ElementName=listBox1, Path=SelectedItem}"
大致:

  • 将2
    TextBox
    es放在容器
    C1
  • C1.DataContext
    绑定到
    ListBox1.SelectedItem
我不确定在
ListBox1
绑定中
XPath=“*”
会给出什么结果。您可能需要以下内容:

<Binding Source="{StaticResource InventoryData}" XPath="@ISBN"/>
试试看

编辑2: 让我们修复内部网格的绑定:

  DataContext="{Binding ElementName=listBox1, Path=SelectedItem}"
请尝试以下操作:

<ListBox
    Grid.Row="0"
    Name="listBox1" >
    <ListBox.ItemsSource>
        <Binding Source="{StaticResource InventoryData}" XPath="*"/>
</ListBox.ItemsSource>
 <ListBox.ItemTemplate>
  <DataTemplate>
    <StackPanel Orientation="Horizontal">
      <TextBlock Text = "{Binding XPath=Title}">
      <TextBlock Text = "{Binding XPath=Summary}">
    </StackPanel>
  </DataTemplate>
 </ListBox.ItemTemplate>
</ListBox>

尝试以下操作:

<ListBox
    Grid.Row="0"
    Name="listBox1" >
    <ListBox.ItemsSource>
        <Binding Source="{StaticResource InventoryData}" XPath="*"/>
</ListBox.ItemsSource>
 <ListBox.ItemTemplate>
  <DataTemplate>
    <StackPanel Orientation="Horizontal">
      <TextBlock Text = "{Binding XPath=Title}">
      <TextBlock Text = "{Binding XPath=Summary}">
    </StackPanel>
  </DataTemplate>
 </ListBox.ItemTemplate>
</ListBox>


两个文本框位于一个元素中。你能添加一些代码片段来解释一下吗?你应该把它贴出来的。那么,什么是有效的,什么是无效的?为方框发布XAML。和网格。好多了。我将扩展我的答案。两个文本框在一个元素中。你能添加一些代码片段来解释一下吗?你应该把它贴出来的。那么,什么是有效的,什么是无效的?为方框发布XAML。和网格。好多了。我会扩展我的答案。我已经试过你的密码了。但是这些文本块显示的方式/位置?似乎“”不起作用,其中->设置为datatemplete。为什么不显示->因为XPath=不起作用。您可以尝试XPath=“Book”而不是XPath=“*”吗?我已更改为XPath=“Book”,但文本框中没有显示任何内容。您可以从输出窗口显示绑定错误。没有显示任何错误,但在这里您可以看到整个代码。也许你可以在那里找到错误。我已经试过你的代码了。但是这些文本块显示的方式/位置?似乎“”不起作用,其中->设置为datatemplete。为什么不显示->因为XPath=不起作用。您可以尝试XPath=“Book”而不是XPath=“*”吗?我已更改为XPath=“Book”,但文本框中没有显示任何内容。您可以从输出窗口显示绑定错误。没有显示任何错误,但在这里您可以看到整个代码。也许你可以在那里找到错误。