x:Arguments – direktiva
Packages construction arguments for a non-parameterless constructor object element declaration in XAML, or for a factory method object deklarace.
Použití elementu XAML (neparametrový konstruktor)
<object ...>
<x:Arguments>
oneOrMoreObjectElements
</x:Arguments>
</object>
Použití elementu XAML (metoda továrny)
<object x:FactoryMethod="methodName"...>
<x:Arguments>
oneOrMoreObjectElements
</x:Arguments>
</object>
Hodnoty XAML
Hodnota | Popis |
---|---|
oneOrMoreObjectElements |
Jeden nebo více elementů objektu, které určují argumenty, které mají být předány backing non-parameterless konstruktor nebo objektová metoda. Typickým použitím je použití inicializačního textu v elementech objektu k určení hodnot skutečných argumentů. Viz část Příklady. Pořadí prvků je významné. Typy XAML v pořadí musí odpovídat typům a pořadí typů záložního konstruktoru nebo přetížení metody továrny. |
methodName |
Název metody továrny, která by měla zpracovat všechny x:Arguments argumenty. |
Závislosti
x:FactoryMethod
může upravit obor a chování, kde x:Arguments
se používá.
Pokud není zadán žádný x:FactoryMethod
, x:Arguments
platí pro alternativní (ne-výchozí) podpisy záložních konstruktorů.
Pokud x:FactoryMethod
je zadáno, x:Arguments
platí pro přetížení pojmenované metody.
Poznámky
XAML 2006 může podporovat ne defaultní inicializaci prostřednictvím inicializačního textu. Praktické použití techniky inicializace textu je však omezené. Inicializační text je považován za jeden textový řetězec; proto přidává pouze schopnost pro inicializaci jednoho parametru, pokud není definován převaděč typů pro chování konstrukce, které může analyzovat vlastní položky informací a vlastní oddělovače z řetězce. Textový řetězec logiky objektu je také potenciálně nativním převaděčem výchozího typu analyzátoru XAML pro zpracování primitiv, než je řetězec true.
Použití x:Arguments
XAML není použití elementu vlastnosti v typickém smyslu, protože kód direktivy neodkazuje na typ objektu objektu. Je více než jiné direktivy, jako x:Code
je například, když prvek označuje rozsah, ve kterém by měl být kód interpretován jako jiný než výchozí pro podřízený obsah. V tomto případě typ XAML každého elementu objektu komunikuje informace o typech argumentů, které používají analyzátory XAML k určení konkrétního podpisu x:Arguments
metody konstruktoru objektu, na který se pokouší odkazovat.
x:Arguments
pro objekt prvek, který je vytvořen, musí předcházet všechny ostatní prvky vlastnosti, obsah, vnitřní text nebo inicializační řetězce objektu elementu. Elementy objektu v rámci x:Arguments
mohou zahrnovat atributy a inicializační řetězce, jak je povoleno tímto typem XAML a jeho backing konstruktorem nebo metodou továrny. U objektu nebo argumentů můžete zadat vlastní typy XAML nebo typy XAML, které jsou jinak mimo výchozí obor názvů XAML odkazováním na vytvořená mapování předpon.
Procesory XAML používají následující pokyny k určení způsobu použití argumentů zadaných x:Arguments
k vytvoření objektu. Pokud x:FactoryMethod
je zadáno, informace jsou porovnány se zadaným x:FactoryMethod
(všimněte si, že hodnota x:FactoryMethod
je název metody a pojmenovaná metoda může mít přetížení. Pokud x:FactoryMethod
není zadán, informace jsou porovnány se sadou všech veřejných konstruktor přetížení objektu. Logika zpracování XAML pak porovná počet parametrů a vybere přetížení s odpovídajícími arity. Pokud existuje více než jedna shoda, měl by procesor XAML porovnat typy parametrů na základě typů XAML zadaných elementů objektu. Pokud existuje stále více než jedna shoda, chování procesoru XAML není definováno. Pokud je zadán, x:FactoryMethod
ale metoda nelze přeložit, procesor XAML by měl vyvolat výjimku.
Použití <x:Arguments>string</x:Arguments>
atributu XAML je technicky možné. To však neposkytuje žádné možnosti nad rámec toho, co by bylo možné provést jinak prostřednictvím inicializace text a převaděče typů, a použití této syntaxe není záměrem návrhu funkcí metody továrny XAML 2009.
Příklady
Následující příklad ukazuje bezparametrový podpis konstruktoru a pak použití x:Arguments
XAML tohoto podpisu.
public class Food {
private string _name;
private Int32 _calories;
public Food(string name, Int32 calories) {
_name=name;
_calories=calories;
}
}
<my:Food>
<x:Arguments>
<x:String>Apple</x:String>
<x:Int32>150</x:Int32>
</x:Arguments>
</my:Food>
Následující příklad ukazuje podpis metody cílové továrny a pak použití x:Arguments
XAML pro přístup k tomuto podpisu.
public Food TryLookupFood(string name)
{
switch (name) {
case "Apple": return new Food("Apple",150);
case "Chocolate": return new Food("Chocolate",200);
case "Cheese": return new Food("Cheese", 450);
default: {return new Food(name,0);
}
}
<my:Food x:FactoryMethod="TryLookupFood">
<x:Arguments>
<x:String>Apple</x:String>
</x:Arguments>
</my:Food>
Viz také
.NET Desktop feedback
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro