0

Прямо сейчас я «обман» и используя следующее:Как связать RadiusX прямоугольника с ActualHeight прямоугольника и умножить его на некоторое число в Expression Blend 4 (или VS)?

<Rectangle x:Name="rectangle" Stroke="SlateGray" 
    Width="{TemplateBinding ActualWidth}" Height="{TemplateBinding ActualHeight}" 
    HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
    SizeChanged="rectangle_SizeChanged"> 
</Rectangle> 

<x:Code> 
    <![CDATA[ private void rectangle_SizeChanged(object sender, SizeChangedEventArgs e) 
    { 
     Rectangle r = sender as Rectangle; 
     r.RadiusX = r.Height/2; 
     r.RadiusY = r.Height/2; 
    } 
    ]]> 
</x:Code> 

Этот x:Code отлично работает во время выполнения и выполняет то, что я хочу. но я действительно хочу, чтобы мгновенно изменить на Artboard делать что-то вроде:

<Rectangle x:Name="rectangle" Stroke="SlateGray" 
    Width="{TemplateBinding ActualWidth}" Height="{TemplateBinding ActualHeight}" 
    HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
    RadiusX=".5*({TemplateBinding ActualHeight})" 
    RadiusY=".5*({TemplateBinding ActualHeight})"> 
</Rectangle> 

Но нет никакого способа, чтобы включить это .5*(...) Есть еще один способ для достижения этой цели?

ответ

0

Для запуска кода в привязке используется класс преобразователя.

Затем добавьте конвертер в раздел «Ресурсы».

<Window.Resources> 
    <local:MultiplyConverter x:Key="MultiplyConverter" Multipler="5"/> 
</Window.Resources> 

И добавьте укрытие к вашему креплению.

<Rectangle x:Name="rectangle" Fill="#FFA4A4E4" 
     RadiusX="{Binding ActualHeight, Converter={StaticResource MultiplyConverter}, ElementName=rectangle}" 
     RadiusY="{Binding ActualWidth, Converter={StaticResource MultiplyConverter}, ElementName=rectangle,}" /> 

Вы можете использовать окна привязки Blend для автоматического добавления ресурса и привязки.