使用Silverlight和Windows Phone 7将另一个Control的属性绑定到Custom控件

时间:2011-07-26 21:06:05

标签: windows-phone-7 silverlight-3.0

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

public static readonly DependencyProperty CopyTextBlockWidthProperty =
        DependencyProperty.Register("CopyTextBlockWidth", typeof(double), typeof(EllipsisTextBlock),
        new PropertyMetadata(0d, null));

在EllipsisTextBlock的父Grid中,我绑定了另一个Control的属性,如下所示:

<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的CopyTextBlockWidth属性的Set是从不调用的:

public double CopyTextBlockWidth
    {
        get { return (double)GetValue(CopyTextBlockWidthProperty); }
        set { SetValue(CopyTextBlockWidthProperty, value); }
    }

顺便说一句,EllipsisTextBlock类有两个其他的DependencyProperties可以工作。

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:0)

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