2009-12-22 6 views

답변

5

이 그것을 설정 ... 나는 적어도 초기화에, 그것을 설정 ScaleTransform이 없을 수 있습니다, 요소에 바인딩하려는되도록 bindee 요소 에는 항상 ScaleTransform이 있지만 그것은 ID 변환입니다. 그런 다음 ScaleTransform의 이름, 그리고 일반적인 요소 간 요소 구문을 사용하여 바인딩 : 특별히 요소에 바인딩해야하는 경우, 예를 들어 속성을 통해 아래로 통과 할 수

<TextBlock Text="One"> 
    <TextBlock.LayoutTransform> 
    <ScaleTransform ScaleX="1" 
        ScaleY="1" 
        x:Name="s" /> <!-- Note the x:Name --> 
    </TextBlock.LayoutTransform> 
</TextBlock> 

<TextBlock Text="Two"> 
    <TextBlock.LayoutTransform> 
    <ScaleTransform ScaleX="{Binding ScaleX, ElementName=s}" 
        ScaleY="{Binding ScaleY, ElementName=s}" /> 
    </TextBlock.LayoutTransform> 
</TextBlock> 

{Binding LayoutTransform.ScaleX, ElementName=someElement}. 소스 요소에 LayoutTransform이 없거나 ScaleTransform이 아닌 경우 런타임 바인딩 오류가보고됩니다.

+0

감사합니다. 문제를 좀 더 복잡하게 만들려면 textblocks 템플릿 부모에 바인딩해야합니다 ... templateBinding을 사용해야하므로이 상황에서도 유효합니까? – Mark

+1

그렇게 생각 하긴하지만'{TemplateBinding}'대신'{RelativeSource TemplatedParent} '를 사용해야 할 수도 있습니다. ElementName 접근 방식보다는 LayoutTransform.ScaleX 접근 방식을 사용해야 할 것입니다. RelativeSource와 ElementName을 모두 가지고 있습니다). 따라서, {Binding LayoutTransform.ScaleX, RelativeSource = {RelativeSource TemplatedParent}}'. 그런데 고려해야 할 사항 : 구체적으로 눈금을 묶으시겠습니까, 아니면 전체 변형을 바인딩할까요? 'TextBlock LayoutTransform = "{TemplateBinding LayoutTransform}"'? – itowlson

+0

좋은 질문, 나는 규모가 충분해야한다고 생각한다. ... 아프다. 내가 제안한 것을 시도했지만 바인딩 오류가 발생합니다 : 경로 오류 : 'ScaleX'속성이 'object' 'MatrixTransform'에 없습니다. 그래서 바인딩 수식을 다음과 같이 변경했습니다. 그러나 이것은 아무 것도하지 않거나 오류를줍니다. – Mark