2012-09-20 153 views
0

我具有由以下XAML定義的自定義用戶控件:綁定WPF自定義控制寬度/高度和動態調整值

<Grid HorizontalAlignment="Left" VerticalAlignment="Top"> 
    <Ellipse Height="100" Width="100" StrokeThickness="1" Stroke="Black" Fill="Transparent" Opacity="0.7" /> 
    <Ellipse Height="98" Width="98" StrokeThickness="10" Stroke="White" Fill="Transparent" Opacity="0.5" /> 
    <Ellipse Height="80" Width="80" StrokeThickness="1" Stroke="Black" Fill="Transparent" Opacity="0.7" /> 

    <Line StrokeThickness="10" Stroke="Black" X1="33" Y1="33" X2="66" Y2="50" StrokeStartLineCap="Round" StrokeEndLineCap="Round" /> 
    <Line StrokeThickness="10" Stroke="Black" X1="33" Y1="66" X2="66" Y2="50" StrokeStartLineCap="Round" StrokeEndLineCap="Round" /> 
</Grid> 

正如你可以看到,我目前已經將其與一個固定的寬度和高度限定。我想要做的是使這個寬度和高度可定義,當我把這個控制在一個不同的XAML文件。例如:

<Grid> 
    <MyCustomControl Width="100" Height="100" /> 
    <MyCustomControl Width="75" Height="150" /> 
</Grid> 

我知道我可以綁定回從自定義控制這些值,但我感到困惑的是佔全部數學調整位置較小的橢圓和線中間。

我可以在XAML中執行此操作嗎(例如,Width="{Binding Width}-2")還是需要在代碼中繪製我的省略號和行?

回答

2

在這種情況下,我認爲最好的辦法是使用海關Converter s來綁定您的形狀。在轉換器內部,您可以設置任何轉換函數的代碼,也可以將參數傳遞給它。

Width={Binding Width, ElementName=controlName, Converter="...", ConverterParameter="..."} 
相關問題