私は、ItemSourceがCollectionViewSource
にバインドされているListBoxを持っています。 CVSソースはXmlDataProvider
です。したがって、ListBoxは指定したすべてのノード(name属性)をリストします。 これらのノードには属性があり、リストボックスを並べ替える必要があります。 問題は、基になるデータがxmlであるため、すべての値(ノードの属性)は文字列ですが、値の一部は数値を表します。 CollectionViewSource.SortDescriptions.add (...)
でソートすると、それらの(文字列)値がアルファベット順にソートされるため、2,10,5のシーケンスは2,5,10の代わりに10,2,5としてソートされます。 どうすればこの問題を解決できますか?リストボックス内の数字列の並べ替え
解決策がListViewのCustomSortにある場合、誰かが私に基礎的なXmlDocumentでこれを行う方法の簡単な例を教えてください。
私は、IComparerを実装するクラスを書くのは簡単だと思っていましたが、どういうわけか私は迷っています。 私は属性の名前をメソッドに渡したいので、CVSからそれらの属性をすべて "抽出"し、浮動小数点数(この場合は)に変換し、標準関数で並べ替えることができます... しかし、私はそれが与えられたの一種であるため、完全に
希望....このCustomSortは、正直に言うとどのように機能するかに失われたこれは、XmlDocumentオブジェクトを捨てることなく可能である:)
よろしく
読んでいるデータの一部しか数値でない場合は、全体的な並べ替えをどのように実装する予定ですか?私は、もしあなたが2,10,5、5aのシーケンスを持っていたら、どのように見えるのでしょうか?数値以外のすべての数値は、数値順にソートされた数値の前後に移動しますか? –
英数字の文字列はありません。 "name"のような属性は、文字列やorderdのように解釈されますが、それはXmlAttributeであるためにスティッキングとして格納される "age"のようなものですが、数値として扱われることを望みます。他の部分では、これを達成するために単純にコンバータを使用しますが、最初に変換する特定のsortdescriptionを指定する方法や、xmldocumentを使用せずにデータ構造用の独自のクラスを作成する以外の方法についてはわかりません。残念ながら、これは質問..... ..... – ch40s