Jaká je syntaxe hodnoty závazné v XAML?

hlasů
2

Začínám se všichni naučili se o závazné v WPF. Mám hodně problémů ladicí chyby analyzovat v mé XAML, ačkoli. Může mi někdo pěkně prosím, řekněte mi, co je s tímto malým kouskem špatně? :

<Border Name=TrackBackground
    Margin=0
    CornerRadius=2                     
    Grid.Row=1
    Grid.Column=1
    Background=BlanchedAlmond
    BorderThickness=1
    Height={TemplateBinding Height}>

    <Canvas Name=PART_Track Background=DarkSalmon Grid.Row=1 Grid.Column=1>
        <Thumb Name=ThumbKnob Height={Binding ElementName=Part_Track, Path=Height, Mode=OneWay} />
    </Canvas>
</Border>

Je to DataBinding, že rozbije. I získat InvalidAttributeValuevýjimku pro ThumbKnob.Height při pokusu o spuštění tohoto. Vím, že musí být něco chybí zásadní. Tak mi vyplnit, zakladače a vděčnost bude neomezená.


Změna ElementName nepomohlo. Tam musí mi něco jiného, ​​jsem nedostal.

Měl bych zmínit, že jsem testování tohoto Silverlight. Přesné zprávy Začínám z Internet Explorer je:

XamlParseException: Invalid attribute value for property Height.

Celá tato věc je uvnitř ControlTemplate. Dělám posuvníku jen proto, aby sám učit koncepty.

Položena 11/08/2008 v 14:09
zdroj uživatelem
V jiných jazycích...                            


8 odpovědí

hlasů
2

Vlastnost ElementName na závazném nepodporuje Silverlight.

Můžete si všimnout, pokud jdete do kódu za sebou nebo kontrolovat vazba objekt v třídě Explorer nemá vlastnost pojmenovanou ElementName.

Odpovězeno 12/08/2008 v 05:33
zdroj uživatelem

hlasů
1

Ok, tady je řešení:

Silverlight nelze vázat hodnoty z jednoho prvku uživatelského rozhraní do druhého deklarativně. Jediný způsob, jak dělat to, co jsem se snažil dělat tady by bylo v C # kód.

Měl jsem referenci k tomuto včera, ale teď myslím, že budete prostě muset vzít mé slovo pro to :)

Odpovězeno 12/08/2008 v 13:00
zdroj uživatelem

hlasů
1

Hmm, že by mohl být podstatný rozdíl mezi WPF en Silverlight v tomto bodě ..

Zdá se mi, že nemá problém, co tak ještě kompilaci a spouštění tento vzorek v okně WPF:

<Slider Width="400" Height="20">
    <Slider.Template>
        <ControlTemplate>
            <Border Name="TrackBackground"
                Margin="0"
                CornerRadius="2"                     
                Grid.Row="1"
                Grid.Column="1"
                Background="BlanchedAlmond"
                BorderThickness="1">

                <Canvas x:Name="PART_Track" Background="DarkSalmon" Grid.Row="1" Grid.Column="1">
                    <Thumb Name="ThumbKnob" Height="{Binding ElementName=PART_Track, Path=Height, Mode=OneWay}" />
                </Canvas>
            </Border>
        </ControlTemplate>
    </Slider.Template>
</Slider>

Možná Silverlight má méně vlastností ve třídě Thumb ...

http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.thumb.aspx

Odpovězeno 11/08/2008 v 15:58
zdroj uživatelem

hlasů
1

To, co obvykle dělám ladit DataBinding, je přidat převodník, kde bych mohl nastavit zarážku VS.NET ..

takže vázání by bylo něco jako toto:

{Binding ElementName=PART_Track, Path=Height, Mode=OneWay, Converter={StaticResources DebugConverter}}

Pak převodník může být prázdný implementace z IValueConverter, nastavit zarážku v metodě převést a uvidíme, co výška je nastavena na ...

Nezapomeňte se přidat převaděč své zdroje ...

Možná je hodnota NaN?

Odpovězeno 11/08/2008 v 14:56
zdroj uživatelem

hlasů
0

Silverlight 3 nyní zahrnuje ElementName vázání ...

Odpovězeno 17/02/2010 v 23:44
zdroj uživatelem

Odpovězeno 11/08/2008 v 16:17
zdroj uživatelem

hlasů
0

Je Border v šabloně btw?

Vzhledem k tomu není potřeba TemplateBinding v případě, že hranice není umístěn v šabloně (buď ControlTemplate nebo DataTemplate)

Odpovězeno 11/08/2008 v 14:35
zdroj uživatelem

hlasů
0

Především jeho věc pláště ...

Změna

Part_Track
na
PART_Track
která bude opravit závazný chybu ..

Ale já si nemyslím, že to je to, co se snažíte dělat ..

Dalo by se automaticky použít mřížku místo plátno a velikost vůle palec. Plátno není opravdu mají výšku, protože to opravdu není jedno, o výšce svých dětí ...

Snad to pomůže...

Odpovězeno 11/08/2008 v 14:26
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more