1
scaleX와 scaleY를 다른 요소의 scaleX와 scaleY에 바인딩하려는 버튼이 있는데 어떻게 할 수 있습니까?WPF 한 요소의 배율을 다른 배율에 바인딩
까다로운 부분은
이상적으로scaleX와 scaleY를 다른 요소의 scaleX와 scaleY에 바인딩하려는 버튼이 있는데 어떻게 할 수 있습니까?WPF 한 요소의 배율을 다른 배율에 바인딩
까다로운 부분은
이상적으로이 그것을 설정 ... 나는 적어도 초기화에, 그것을 설정 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이 아닌 경우 런타임 바인딩 오류가보고됩니다.
감사합니다. 문제를 좀 더 복잡하게 만들려면 textblocks 템플릿 부모에 바인딩해야합니다 ... templateBinding을 사용해야하므로이 상황에서도 유효합니까? – Mark
그렇게 생각 하긴하지만'{TemplateBinding}'대신'{RelativeSource TemplatedParent} '를 사용해야 할 수도 있습니다. ElementName 접근 방식보다는 LayoutTransform.ScaleX 접근 방식을 사용해야 할 것입니다. RelativeSource와 ElementName을 모두 가지고 있습니다). 따라서, {Binding LayoutTransform.ScaleX, RelativeSource = {RelativeSource TemplatedParent}}'. 그런데 고려해야 할 사항 : 구체적으로 눈금을 묶으시겠습니까, 아니면 전체 변형을 바인딩할까요? 'TextBlock LayoutTransform = "{TemplateBinding LayoutTransform}"'? – itowlson
좋은 질문, 나는 규모가 충분해야한다고 생각한다. ... 아프다. 내가 제안한 것을 시도했지만 바인딩 오류가 발생합니다 : 경로 오류 : 'ScaleX'속성이 'object' 'MatrixTransform'에 없습니다. 그래서 바인딩 수식을 다음과 같이 변경했습니다. 그러나 이것은 아무 것도하지 않거나 오류를줍니다. –
Mark