簡體   English   中英

將 XML 文件綁定到 ListBox 后,項目不顯示

[英]Items doesn't show up after binding an XML file to a ListBox

我想將 XML 文件綁定到 ListBox。 問題是 ListBox 中的項目在將其綁定到 XML 文件后不顯示。

我已將 ListBox 中的 ItemsSource 設置為 StaticResource 但它不起作用,它不會顯示在 Visual Studio 的設計器或應用程序本身中。

這是 XAML 代碼:

<Window x:Class="StudyNotes.ModifySubjectListWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:StudyNotes"
        mc:Ignorable="d"
        Title="" Height="150" Width="300" ResizeMode="NoResize">
    <Grid>
        <Grid.Resources>
            <XmlDataProvider x:Key="SubjectData" Source="SubjectList.xml" XPath="/Subjects/Subject"/>
        </Grid.Resources>
        <DockPanel Margin="10">
            <StackPanel DockPanel.Dock="Right" Margin="10,0,0,0">
                <Button Name="AddSubjectButton" Margin="0,0,0,5">Add</Button>
                <Button Name="DeleteSubjectButton">Delete</Button>
            </StackPanel>
            <ListBox x:Name="SubjectList" ItemsSource="{Binding Source={StaticResource SubjectData}, XPath=/Subjects/Subject}"></ListBox>
        </DockPanel>
    </Grid>
</Window>

這是 XML 文檔:

<?xml version="1.0" encoding="utf-8" ?>
<Subjects>
  <Subject Name="Subject1"/>
  <Subject Name="Subject2"/>
  <Subject Name="Subject3"/>
  <Subject Name="Subject4"/>
</Subjects>

我希望這會起作用並出現,但肯定有我不知道的錯誤。

有幾個項目:

首先,確保您的“SubjectList.xml”文件的“構建操作”屬性設置為“內容”。

其次,從ListBox的 ItemsSource 中刪除“XPath”內容,這會導致一些麻煩。 你只需要ItemsSource="{Binding Source={StaticResource SubjectData}}"

第三,這是最大的問題,您的 XML 文件設置不正確。 進行上述兩項更改后,將ListBox更改為DataGrid以進行快速測試,它將突出顯示 XML 文件的問題:

在此處輸入圖片說明

在此屏幕截圖中很難看到,但請查看“值”列。 它是空的。 您的 XML 文件設置在您的數據存儲在“屬性”中的位置,特別是“名稱”屬性,如果您查看“OuterXML”列中的內容,您就會看到。 XMlDataProvider 默認獲取 XML 文件中的Value 你沒有這些。

存儲 XML 數據的更好方法可能是:

<Subjects>
  <Subject>Subject1</Subject>
  <Subject>Subject2</Subject>
  <Subject>Subject3</Subject>
  <Subject>Subject4</Subject>
</Subjects>

如果你這樣做,你會得到預期的結果:

在此處輸入圖片說明

暫無
暫無

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

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