クエリ結果としてList<XmlNode>
を提供するカスタムDataSourceProviderを作成しました。WPF:カスタムコレクション(リスト<Type>)リストボックスへのパスフィルタリングによるデータバインディング
は、Pathパラメータを使用することにより、結果のリストボックスは、リストに含まれているタグ(複数可)をリストボックスに移入する必要があり
パス=タグのXmlNodeに指定されたプロパティの指定されたリストが含まれている必要があります。しかし代わりに、リストに最初のList-Itemsタグが設定されます。
質問はです。なぜなら、PathパラメータはListのすべてのTag要素を取得せず、最初のリスト要素Tagの文字のみを取得するのはなぜですか。
<ListBox Grid.Row="1" ItemsSource="{Binding Path=Tag, Source={ StaticResource txtProvider}}"
DockPanel.Dock="Bottom">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Label Content="{Binding}" FontFamily="Arial" FontWeight="Normal" Margin="5,0,0,0"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
カスタム返しDataSourceProvider:
<Window.Resources>
<classes:Custom_XmlProvider x:Key="txtProvider" Path="name" />
</Window.Resources>
のListBoxがパス=タグが付けられたリソースに結合する:
カスタムリストは、リソースとして提供されています1200オブジェクトのリスト:
protected override void BeginQuery()
{
System.Threading.ThreadPool.QueueUserWorkItem(RunQuery, null);
}
private void RunQuery(object state)
{
base.BeginQuery();
try
{
//TODO - do something with the NodeList
c_pData = c_thisXmlParser.NodeList;
OnQueryFinished(c_pData, null, null, c_pData);
}
catch
{
OnQueryFinished(null, null, null, null);
}
}
たXmlNodeのように定義される:これは、リストの最初の要素である
public class XmlNode
{
public string Tag { get; set; }
public string Type { get; set; }
public string InnerText { get; set; }
public int FileNumber { get; set; }
public int NodeDepth { get; set; }
public int IndexNumber { get; set; }
}
:
と結果のリストがウィンドウにこのように示されている:
上記l istにTag要素のリストが含まれている必要があります.PathパラメータがListの適切な要素を収集しない理由を正しく理解できず、最初のlist-elementsタグ名のリストを提供します。
私はそれを愛しています。知らないことの非効率性は、単純さ自体で解決されます。唯一の問題は、あなたが愚かであるという感情を得ることです:)ありがとう。 –
私を混乱させたのは、元のコードがXmlNode要素のリストを与えた 'Path =。 'でバインドされていたということでした。 –