XAMLを使用してXAMLを使用しているビューをXAMLで書いています。入力がfalse
の場合はIValueConverter
と書いています。これらのセマンティクスが意味をなす型(文字列/リスト/シーケンス/配列/ IEnumerables)に対しては "空"です。私は空の文字列についてfalseを返す以下、で開始しているが、私はリスト、シーケンス、配列、IEnumerablesにこれを拡張する方法を見つけ出すことはできません。リスト、シーケンス、配列、またはIEnumerableの種類が空であるかどうかを確認する
type FalseIfEmptyConverter() =
interface IValueConverter with
member __.Convert(value:obj, _, _, _) =
match value with
| :? string as s -> (s <> "" && not (isNull s)) |> box
// TODO: extend to enumerables
| x -> invalidOp <| "unsupported type " + x.GetType().FullName
member __.ConvertBack(_, _, _, _) =
raise <| System.NotImplementedException()
は、物事は私が試したことドン」 T作業:
:? list<_>
は、(少なくともintの)(箱入り)のリストと一致し、This construct causes code to be less generic than indicated by its type annotations. The type variable implied by the use of a '#', '_' or other type annotation at or near [...] has been constrained to be type 'obj'
:? list<obj>
は警告を生成しない警告を生成するだけでなく、の箱入りリストと一致しないしませんints- Itそれはと
IEnumerable<_>
と同じだ(と上記のように私は似seq
試合の下に配置した場合、それは私の知る限りseq
対応しているので理にかなっている、ルールが一致することはないだろうと警告し:? seq<_>
と:? seq<obj>
- と同じ)
IEnumerable
から
'一致値は です。 :? System.Collections.IEnumerableとしてs - > s.GetEnumerator()。MoveNext()|> not | x - > invalidOp <| "サポートされていないタイプ" + x.GetType()。FullName' –