저는 라이브러리간에 버튼 템플릿을 만들려고 시도했지만 실패했습니다. 템플리트는 기본적으로 경계가있는 원 안의 경계가있는 원입니다 (현재). 안쪽 테두리의 크기를 바깥 쪽보다 작게 만들기 위해 바인딩에 Converter를 사용합니다. 저는 TemplatedParent의 속성을 ConverterParameter로 전달하고 싶습니다.하지만 디자인 상 명백하게 작동하지 않습니다. ConveterParameter를 TemplatedParent 속성에 바인딩하려고하기 때문에 작동하지 않는 비트가 있습니다.바인딩 스타일 템플릿 - 작동 방식?
여기 (A ResourceDictionary의에서) 내 스타일 데프의 :
<SolidColorBrush x:Key="MyBorderFillColour">Yellow</SolidColorBrush>
<SolidColorBrush x:Key="MyBorderEdgeColour">#ff652f00</SolidColorBrush>
<SolidColorBrush x:Key="MyGeneralFillColour">#ffffffbd</SolidColorBrush>
<s:Int32 x:Key="MyBorderThickness">10</s:Int32>
<l:RelativeSizeConverter x:Key="RelativeSizeConverter" />
<Style x:Key="MyButtonStyle" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Ellipse
Fill="{StaticResource MyBorderFillColour}"
StrokeThickness="2"
Stroke="{StaticResource MyBorderEdgeColour}"
Height="{TemplateBinding Height}"
Width="{TemplateBinding Width}" />
<Ellipse StrokeThickness="2"
Stroke="{StaticResource MyBorderEdgeColour}"
Fill="{StaticResource MyGeneralFillColour}"
Height="{Binding Path=Height,
RelativeSource={RelativeSource TemplatedParent},
Converter={StaticResource RelativeSizeConverter},
ConverterParameter={StaticResource MyBorderThickness}}"
Width="{Binding Path=Width,
RelativeSource={RelativeSource TemplatedParent},
Converter={StaticResource RelativeSizeConverter},
ConverterParameter={TemplateBinding BorderThickness}}" />
<TextBlock
Text="{TemplateBinding Content}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Foreground="Black"
FontFamily="Calibri"
FontWeight="Bold"
FontSize="17" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
두 번째 타원의 높이가 정적 리소스를 사용하여 작동하지만, 폭은 TemplateBinding 방식을 사용하여 작동하지 않습니다. 나는 또한 시도했다
ConverterParameter={Binding Path=BorderThickness,RelativeSource={RelativeSource TemplatedParent}}
나의 목표를 달성하는 방법 어떤 생각?!? 어떤 도움
덕분에,
최고 - 나는 당신이 제안한 것처럼 버튼 자체에서 변환기를 사용하지만 원하는 속성을 ConverterParameter (예 : "BorderedWidth")로 사용하여 제안한 바대로 약간 일반적으로 변경했습니다. 그래서 너비 및 높이는 다음과 같다 : "{. 바인딩 경로 = RelativeSource = {RelativeSource TemplatedParent}, 변환기 = {정적 리소스 ButtonPropertyConverter}, ConverterParameter = BorderedHeight}". – AndyC
높이 = 폭 = "{바인딩 경로 = RelativeSource = {RelativeSource TemplatedParent}, 변환기 = {정적 리소스 ButtonPropertyConverter}, ConverterParameter = BorderedWidth} "/> – AndyC
쿨 - 당신이 아 지금이 유망한 소리 – ColinE