버튼 컨트롤의 포커스를받을 때 여백을 줄이기위한 시나리오가 있습니다. 이는 Button 컨트롤의 테두리 속성을 늘리거나 같은 시간 (높이 및 너비)으로 유지하는 데 wan't 버튼을 사용하지 않기 때문입니다. 그래서 웹에 대한 약간의 노력으로 ValueConverter를 작성하고 마진을 줄이게되었습니다. 하지만 아직까지는 작업 코드를 입력 할 수 없습니다.버튼에 포커스가있을 때 버튼의 여백 줄이기
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
Thickness newMargin = new Thickness();
Thickness margin = (Thickness)value;
Thickness reduceBy = (Thickness)parameter;
newMargin.Left = margin.Left - reduceBy.Left;
newMargin.Top = margin.Top - reduceBy.Top;
newMargin.Right = margin.Right - reduceBy.Right;
newMargin.Bottom = margin.Bottom - reduceBy.Bottom;
return newMargin;
}
Margin.Left에있는 StackOverflowException에서 위의 코드 결과를 재귀 적으로 호출되는 : 여기에 내가
<ControlTemplate.Triggers> <!--ControlTemplate for the Button-->
<Trigger Property="IsFocused" Value="True">
<Setter Property="BorderBrush" TargetName="bdrButton" Value="Wheat"/>
<Setter Property="BorderThickness" TargetName="bdrButton" Value="2"/>
<Setter Property="Margin" TargetName="bdrButton" >
<Setter.Value>
<Binding ElementName="bdrButton" Path="Margin" Converter="{StaticResource N_MarginReducer}">
<Binding.ConverterParameter>
<Thickness>1,1,1,1</Thickness>
</Binding.ConverterParameter>
</Binding>
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
이 변환기 XAML
를 뒤죽박죽 한 것입니다. 누구나 달성하려는 시나리오에 대해 더 나은 아이디어 나 구현 방법이 있습니다.
? IValueConverter보다 쉬울 수도 있습니다. –
Leslie, 답장을 보내 주셔서 감사합니다.하지만이 시나리오에서 어떻게 사용할 수 있는지 안내해주십시오. 필자는 MVVM 패턴을 따르는 파일 뒤에 코드를 사용하지 않을 것입니다. – Jatin
예, MVVM을 따르지 않습니다. XAML을 살펴본 후에 한 가지 - bdrButton 여백에 대한 Setter의 값이 Setter 내에 있지 않은 것처럼 보입니까? 또는 복사/붙여 넣기가 잘못되었습니다. –