Windows phone 7 绑定另一个控件';使用Silverlight和Windows Phone 7将属性设置为自定义控件

Windows phone 7 绑定另一个控件';使用Silverlight和Windows Phone 7将属性设置为自定义控件,windows-phone-7,silverlight-3.0,Windows Phone 7,Silverlight 3.0,我创建了一个名为EllipsisTextBlock的自定义控件,该控件具有DependencyProperty,旨在接收另一个控件的属性值: public static readonly DependencyProperty CopyTextBlockWidthProperty = DependencyProperty.Register("CopyTextBlockWidth", typeof(double), typeof(EllipsisTextBlock),

我创建了一个名为EllipsisTextBlock的自定义控件,该控件具有DependencyProperty,旨在接收另一个控件的属性值:

public static readonly DependencyProperty CopyTextBlockWidthProperty =
        DependencyProperty.Register("CopyTextBlockWidth", typeof(double), typeof(EllipsisTextBlock),
        new PropertyMetadata(0d, null));
在EllipsisTextBlock的父网格中,我绑定另一个控件的属性,如下所示:

<Grid Margin="10,0,0,0" Grid.Column="1">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" MaxHeight="84"/>
            <RowDefinition Height="Auto" MaxHeight="72"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*" MaxHeight="120"/>
        </Grid.RowDefinitions>
        <TextBlock x:Name="tbxTeste" Text="{Binding Title}" FontSize="28" Visibility="Collapsed" Grid.Row="0"></TextBlock>
        <extensions:EllipsisTextBlock Text="{Binding Title}" FontSize="28" TextWrapping="Wrap" CopyTextBlockWidth="{Binding Path=ActualWidth, ElementName=tbxTeste}" Grid.Row="0"></extensions:EllipsisTextBlock>
...
顺便说一句,EllipsisTextBlock类还有两个可用的DependencyProperty

有什么想法吗


谢谢

虽然使用XAML属性语法会产生误导,但当您在XAML中为属性分配绑定时,会调用SetBinding,而不是SetValue或CLR setter。

对不起,Ryan,我没有理解您的意思。我可能可以将其格式化得更好。当您使用绑定对XAML中的依赖项属性进行赋值时。WPF会在你的控件上调用SetBinding,所以永远不会调用setter。我现在知道了。所以这意味着我需要改变一些东西,否则它根本不起作用?我在定义DependencyProperty时添加了回调方法,但是没有调用它。绑定可以工作。EllipsisTextBlock的宽度可能为零,因为TextBlock的可见性设置为“折叠”(这意味着不占用空间)。
public double CopyTextBlockWidth
    {
        get { return (double)GetValue(CopyTextBlockWidthProperty); }
        set { SetValue(CopyTextBlockWidthProperty, value); }
    }