none
如何让背景宽度和Label输入文字宽度同时变化? RRS feed

  • 问题

  •  <Canvas x:Name="grid" Width="Auto" MouseEnter="grid_MouseEnter">
            <Rectangle Height="30" RadiusY="5" RadiusX="5" Stroke="Black" Canvas.Left="0" Canvas.Top="0" Width="{Binding Path=Width,ElementName=MessageLbl}">
                <Rectangle.Fill>
                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                        <GradientStop Color="#bdbdbd" Offset="0"/>
                        <GradientStop Color="#c8c8c8" Offset="1"/>
                    </LinearGradientBrush>
                </Rectangle.Fill>
            </Rectangle>
            <Image Canvas.Left="{Binding Path=Width,ElementName=MessageLbl}" Canvas.Top="4" Height="16" Name="imgClose" Opacity="0.4" Source="Source/Close.png"  MouseDown="imgClose_MouseDown" Stretch="Fill" ToolTip="Close Balloon" Width="16" />
            <Label Canvas.Left="48" Width="Auto" Height="Auto" Canvas.Top="2" Content="{Binding Path=MessageText, ElementName=me, Mode=Default}"  x:Name="MessageLbl"  ></Label>
          
        </Canvas>

    上面这样,lable绑定显示MessageText,背景Rectangle 的宽度我想让它自适应Label的长度,但是目前这样写无效,求有效的方法一个,多谢

    2011年10月14日 9:55

答案

  • 由于你没有设置Label的宽度,所以rectangle绑定出来的值应该是NaN

    我只在后台写过.你可以试试把 Path=Width,ElementName=MessageLbl 改成 Path = ActualWidth, ElementName=MessageLbl

    ActualWidth我理解是实际呈现出来的宽度.

    希望 对你有帮助


    Hero
    • 已标记为答案 a013strife 2011年10月20日 2:11
    2011年10月14日 14:40
  • 嗯,用Converter吧,直接绑定只能是值的复制,如果你要进行转换运算,只有Converter.


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 a013strife 2011年10月20日 2:11
    2011年10月17日 3:06
    版主

全部回复

  • 由于你没有设置Label的宽度,所以rectangle绑定出来的值应该是NaN

    我只在后台写过.你可以试试把 Path=Width,ElementName=MessageLbl 改成 Path = ActualWidth, ElementName=MessageLbl

    ActualWidth我理解是实际呈现出来的宽度.

    希望 对你有帮助


    Hero
    • 已标记为答案 a013strife 2011年10月20日 2:11
    2011年10月14日 14:40
  • 好像可以,但是我想在原来基础上加上10px怎么做?只能用converter吗?
    2011年10月15日 2:10
  • 嗯,用Converter吧,直接绑定只能是值的复制,如果你要进行转换运算,只有Converter.


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 a013strife 2011年10月20日 2:11
    2011年10月17日 3:06
    版主