none
设计UserControl时,如何屏蔽一些原本就有的属性和新属性设计时响应问题? RRS feed

  • 问题

  • 例如我在UserContorl中写了一个名为SideLength的double依赖属性,当设置该属性时会把自身的值赋值给UserContorl本身的Width和Height。从使用上说,该属性的存在会使这个自定义控件的4个边长永远一样。那么就得屏蔽原本就有的Width和Height属性,不暴露给外界,防止使用者修改使得height和width边长不一致。怎么做?

    还有xaml上更改新设计的属性响应问题,如果我在xaml上使用我设计的UserContorl,并更改SideLength属性内容,例如<MyUserControl SideLength="200" />,设计阶段界面的UserContorl的边长不会有变化。如果在使用UserContorl的对象的构造函数或控件l事件中用c#代码对SideLength属性赋值,并编译运行时才会起效果。这个怎么解决?



    • 已编辑 Trian555 2019年2月19日 2:48
    2019年2月19日 2:04

全部回复


  • Hi Trian555,

    >>那么就得屏蔽原本就有的Width和Height属性,不暴露给外界,防止使用者修改使得height和width边长不一致。怎么做?

    你好, 目前UserContorl中并没有提供覆盖这个属性的修饰符。所以不能通过override来隐藏。你也许需要自定义控件,

    >>还有xaml上更改新设计的属性响应问题,如果我在xaml上使用我设计的UserContorl,并更改SideLength属性内容,例如<MyUserControl SideLength="200" />,设计阶段界面的UserContorl的边长不会有变化。如果在使用UserContorl的对象的构造函数或控件l事件中用c#代码对SideLength属性赋值,并编译运行时才会起效果。这个怎么解决?

    在UserContorl设计的时候,一半会以DesignHeight和DesignWidth为准,你也可以尝试rebuild一下你的项目, 会刷新UI。

    Note: 当你附带一些代码来阐述你的问题是,会得到更针对的建议。

    Best Regards,

    Yong Lu

    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2019年2月19日 5:41
    版主