首先抱歉的標題。我知道這不是很清楚,但我想不出別的。如果有人希望我改變它,請提出您的建議(請注意,downvoting不是這裏的正確解決方案),謝謝。 現在我的問題。 我有一個XML看起來像這樣的:高級綁定(首先到xml然後到別的東西)
<scenarios-list>
<scenario name="Fuori casa" value="fuori-casa">
<lights>
<lights-group name="soggiorno">
<lights-item name="portone" outputChannelName="Luci|Appartamento|Portone|DO_Stato" inputChannelName="Luci|Appartamento|Portone|DI_On_Off">off</lights-item>
<lights-item name="soggiorno-principale" outputChannelName="Luci|Appartamento|Soggiorno_Principale|DO_Stato" inputChannelName="Luci|Appartamento|Soggiorno_Principale|DI_On_Off">off</lights-item>
<lights-item name="soggiorno-secondario" outputChannelName="Luci|Appartamento|Soggiorno_Secondario|DO_Stato" inputChannelName="Luci|Appartamento|Soggiorno_Secondario|DI_On_Off">off</lights-item>
<lights-item name="parete-zona-cucina" outputChannelName="Luci|Appartamento|Parete_Zona_Cucina|DO_Stato" inputChannelName="Luci|Appartamento|Parete_Zona_Cucina|DI_On_Off">off</lights-item>
<lights-item name="finestra-soggiorno" outputChannelName="Luci|Appartamento|Finestra_Soggiorno|DO_Stato" inputChannelName="Luci|Appartamento|Finestra_Soggiorno|DI_On_Off">off</lights-item>
</lights-group>
... (lots of <lights-group> here)
</lights>
... (lots of <lights> here)
</scenario>
...(lots of <scenario> here)
</scenarios-list>
我有一個用戶控件中,用戶可以查看和編輯此情景:所以基本上
<Grid Name="BaseGrid">
<Grid.Resources>
<XmlDataProvider **x:Name="ScenesXmlName"** x:Key="ScenesXml" XPath="scenari-list/scenario" Source="C:\Users\andrea\RSSReaderSubscriptions-5.xml"/>
</Grid.Resources>
<ComboBox Name="ScenariCombo"
**ItemsSource="{Binding Source={StaticResource ScenesXml}}" DisplayMemberPath="@name"**/>
<StackPanel>
<ListBox Name="LightsList" **ItemsSource="{Binding Source={StaticResource ScenesXml}, XPath=lights/lights-group}**">
<ListBox.ItemTemplate>
<DataTemplate>
<Expander Name="LightsExpander" **Header="{Binding [email protected]}"** >
<ListBox>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Label **Content="{Binding [email protected]}"** />
<CheckBox />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Expander>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</StackPanel>
</Grid>
我想:
- 將
<scenarios-list>
加載到組合框中(僅顯示 場景的名稱)[我的代碼已經這樣做] - 加載
<lights-group>
列表到選定的組合框項目列表框中築底(只顯示名稱的燈組的)我的代碼已經這樣做了,即使我得到這個錯誤:
System.Windows.Data Error: 43 : BindingExpression with XPath cannot bind to non-XML object.; XPath='lights/lights-group' BindingExpression:Path=; DataItem='XmlDataCollection' (HashCode=56809051); target element is 'ListBox' (Name='LightsList'); target property is 'ItemsSource' (type 'IEnumerable') XmlDataCollection:'MS.Internal.Data.XmlDataCollection'
- 內被納入
<lights-group>
每個擴展器加載所有<lights-item>
[我沒有對如何做到這一點微弱的想法]
你能幫助我嗎?