私はいくつかのWPFデータバインディングを実行しようとしていますが、私は少し時間がかかっています。私は2つのリストボックスとXMLファイルを持っています。最初のリストボックスは、XMLソースに正常にバインドされます。ただし、最初のリストボックスから2番目のリストボックスのソースとして選択したアイテムの子にバインドしようとすると、何も表示されません。目標は、索引やルックアップのようなものです(1つの索引を選択すると、関連する項目が検索されます)。私はデータバインディングのためにここに何かを見逃していますか? XAMLとXMLを以下に示します。WPF XMLデータバインド
XAML:
<Window x:Class="MyTool.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="600" Width="800">
<Window.Resources>
<XmlDataProvider x:Key="AllDeployments" XPath="Deployments" Source="Deployments.xml" />
<DataTemplate x:Key="dtDeployments">
<StackPanel FlowDirection="LeftToRight" Orientation="Horizontal">
<TextBlock Text="{Binding [email protected]}" />
<TextBlock Text=" - "/>
<TextBlock Text="{Binding [email protected]}" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="dtFiles">
<TextBlock Text="{Binding XPath=File}" />
</DataTemplate>
</Window.Resources>
<Grid Name="gMain">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="2"/>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Menu Grid.Column="0" Grid.ColumnSpan="3"></Menu>
<ListBox Grid.Column="0" Name="lbDeployment"
ItemsSource="{Binding Source={StaticResource AllDeployments}, XPath=Deployment}"
ItemTemplate="{StaticResource dtDeployments}"></ListBox>
<GridSplitter Grid.Column="1"></GridSplitter>
<StackPanel Grid.Column="2">
<ListBox Name="lbFiles"
ItemsSource="{Binding Mode=TwoWay, ElementName=lbDeployments, Path=SelectedItem.InnerText, UpdateSourceTrigger=PropertyChanged}"
ItemTemplate="{StaticResource dtFiles}"
Height="400"></ListBox>
</StackPanel>
</Grid>
</Window>
XML:彼らは黙って失敗する傾向があるので、
<?xml version="1.0" encoding="utf-8"?>
<Deployments MostRecentDate="12/31/2009 8:41:13 PM">
<Filters>
<Filter>.cs</Filter>
<Filter>.csproj</Filter>
</Filters>
<Deployment Name="First Deployment" ID="1" Date="6/29/2009 8:41:13 PM">
<File>file1.cs</File>
<File>file2.cs</File>
</Deployment>
<Deployment Name="First Deployment" ID="1" Date="6/29/2009 8:41:13 PM">
<File>file1.cs</File>
<File>file2.cs</File>
</Deployment>
<Deployment Name="First Deployment" ID="1" Date="6/29/2009 8:41:13 PM">
<File>file1.cs</File>
<File>file2.cs</File>
</Deployment>
<Deployment Name="First Deployment" ID="1" Date="6/29/2009 8:41:13 PM">
<File>file1.cs</File>
<File>file2.cs</File>
</Deployment>
<Deployment Name="First Deployment" ID="1" Date="6/29/2009 8:41:13 PM">
<File>file1.cs</File>
<File>file2.cs</File>
</Deployment>
</Deployments>
感謝。テンプレートが動作しない場合、私はそれが提供するXPathと何か関係があると疑っています。 – CodeMonkey1313