Este baza de date care se rupe. Schimbarea ElementName nu a"> Este baza de date care se rupe. Schimbarea ElementName nu a"> Este baza de date care se rupe. Schimbarea ElementName nu a" />

Care este sintaxa legată de valoare în xaml?

Am învățat totul despre legarea în WPF. Am o mulțime de probleme de depanare a erorilor de parse din xaml-ul meu. Poate cineva vă rog să-mi spuneți ce este în neregulă cu această mică bucată? :



    
        <thumb Name="ThumbKnob" Height="{Binding ElementName=Part_Track, Path=Height, Mode=OneWay}" />
    

Este baza de date care se rupe. Am o excepție InvalidAttributeValue pentru ThumbKnob.Height când încerc să rulez acest lucru. Știu că trebuie să lipsesc ceva fundamental. Deci, umpleți-mă, stivuitorii, iar recunoștința mea va fi neschimbată.


Schimbarea ElementName nu a ajutat. Mai trebuie să-mi mai fac altceva.

Ar trebui să menționez că încerc asta în Silverlight. Mesajul exact care ies din Internet Explorer este:

XamlParseException: Valoarea atributului nevalid pentru Înălțimea proprietății.

Totul este în interiorul unui ControlTemplate. Fac un control al culisei doar pentru a mă învăța conceptele.

0
fr hi bn

8 răspunsuri

Ok, aici este afacerea:

În argint, nu puteți lega valori de la un element UI la altul declarativ. Singura modalitate de a face ceea ce încercam să fac aici ar fi în codul C #.

Am avut o referință pentru acest lucru ieri, dar acum cred că va trebui să luați cuvântul meu pentru asta :)

0
adăugat

Mai întâi de toate, este o chestiune de înveliș ...

Schimbare

Part_Track
to
PART_Track
which will fix your binding error..

Dar nu cred că asta încercați să faceți.

Puteti folosi o grilă în loc de panza, iar Thumb-ul va mări automat. Canvasul nu are într-adevăr o înălțime, pentru că nu are mare grijă de înălțimea copiilor săi ...

Sper că acest lucru vă ajută...

0
adăugat

Este granița într-un șablon btw?

Deoarece nu este nevoie de TemplateBinding dacă granița nu este localizată într-un șablon (fie ControlTemplate, fie DataTemplate)

0
adăugat

Ce fac de obicei pentru depanarea bazelor de date, este adăugarea unui convertor în care pot seta un breakpoint în VS.NET ..

astfel încât obligația ar fi ceva de genul:

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

Apoi, convertorul poate fi o implementare goală a unui IValueConverter, a setat un punct de întrerupere în metoda Convert și a vedea ce este setată înălțimea ...

Nu uitați să adăugați convertorul la resursele dvs. ...

Poate valoarea este NaN?

0
adăugat

Hmm, ar putea exista o diferență substanțială între wpf și Silverlight în acest moment ..

Nu prea am probleme cu ceea ce compilarea și executarea acestei mostre într-o fereastră WPF:


    
        
            

                
                    <thumb Name="ThumbKnob" Height="{Binding ElementName=PART_Track, Path=Height, Mode=OneWay}" />
                
            
        
    

Poate că Silverlight are mai puține proprietăți în clasa Thumb ...

http://msdn.microsoft.com/ en-ne/biblioteca/system.windows.controls.primitives.thumb.aspx

0
adăugat

Proprietatea ElementName pe o legare nu este acceptată în Silverlight.

Veți observa că, dacă intrați în codul din spatele sau inspectați obiectul Binding din clasa explorer, acesta nu are o proprietate numită ElementName.

0
adăugat
Doar pentru a nota: este în Silverlight 4. (Și 3.5, cred)
adăugat autor MojoFilter, sursa

Silverlight 3 include acum legarea ElementName ...

0
adăugat