【问题标题】:Binding WPF Custom Control Width/Height & Dynamically Adjusting Value绑定 WPF 自定义控件宽度/高度和动态调整值
【发布时间】:2012-09-13 05:34:20
【问题描述】:

我有一个由以下 XAML 定义的自定义 UserControl:

<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")还是需要在代码中绘制椭圆和线条?

【问题讨论】:

    标签: wpf binding user-controls wpf-controls


    【解决方案1】:

    在这种情况下,我认为更好的办法是使用海关Converters 进行形状绑定。在转换器内部,您可以在代码中设置任何转换函数,也可以传递参数给它。

    Width={Binding Width, ElementName=controlName, Converter="...", ConverterParameter="..."}
    

    【讨论】:

      猜你喜欢
      • 2011-08-17
      • 2012-06-15
      • 1970-01-01
      • 2018-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-01
      • 1970-01-01
      相关资源
      最近更新 更多