2011-06-14 27 views
7

bazı durumlarda çalışmaz. xaml dosyası:TemplateBinding Bu WPF bu sorunu yeniden nasıl

<Style TargetType="local:TestCustomControl"> 
<Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="local:TestCustomControl"> 
      <Grid> 
       <TextBlock Text="{TemplateBinding Text}"></TextBlock> 
       <TextBlock Text="{TemplateBinding Text}"> 
        <TextBlock.RenderTransform> 
         <TranslateTransform X="{TemplateBinding OffSet}" Y="{TemplateBinding OffSet}"/> 
         <!--<TranslateTransform X="10" Y="10"/>--> 
        </TextBlock.RenderTransform> 
       </TextBlock> 
      </Grid> 
     </ControlTemplate> 
    </Setter.Value> 
</Setter> 

Sonra

ana penceresinde ekleyin:

<local:TestCustomControl OffSet="32" Text="the off set is not working" FontSize="36"> 

    </local:TestCustomControl> 

Ardından uygulamayı çalıştırın, "Metin" iyi çalışıyor ancak "OffSet" çalışmıyor. Ve benzer şey Windows Phone 7 geliştirme ortamında denedim ve aynı sonucu aldım.

OffSet'in çalışması için kodu nasıl değiştirmeliyim?

Teşekkür

+0

"WPF 4.5 Unleashed" e göre, Nathan, Adam; 3. ed. c. 2014, s. 437, "Freeze" nin özellikleri üzerinde TemplateBinding kullanamazsınız. 'TranslateTransform' bir 'Freezeable', bu yüzden işe yaramadı ("TextBlock" bir "Freezeable" değil, bu yüzden orada işe yaradı). Şaşırtıcı olan, bunun bir çalışma zamanı (veya başka bir zaman) hatası olmamasıdır. Sadece sivri başarısız. –

cevap

17

Dene: Eğer WP7.0 hedefliyorsanız

{Binding Offset, RelativeSource={RelativeSource TemplatedParent}} 
+0

wpf için çalışıyor, WP7 – CuiPengFei

+0

için tekrar test edilmiyor, Silverlight3 için çalışmıyor, Silverlight4 için çalışıyor. – CuiPengFei

+1

WP7.0, oldukça seyreltik bir "Silverlight 4" 'e sahiptir. WP7.1 (aka Mango) ile birlikte gönderilen Silverlight4 uygulaması çok daha eksiksiz ve CuiPengFei'nin çözümü muhtemelen çalışmaya başlayacak. –

1

TemplateBing ve RelativeSource çalışmaz ikisi, yani sadece (Silverlight 3) unutun. Etrafında çalışmak için başka yollar kullanın. "OffSet" her değiştirildiğinde, her dönüşümün X/Y değerlerini el ile değiştirdim.

İlgili konular