【问题标题】:Binding another Control's property to Custom control with Silverlight and Windows Phone 7使用 Silverlight 和 Windows Phone 7 将另一个控件的属性绑定到自定义控件
【发布时间】:2011-07-26 21:06:05
【问题描述】:

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

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

在 EllipsisTextBlock 的父 Grid 中,我正在绑定其他控件的属性,如下所示:

<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。

有什么想法吗?

谢谢

【问题讨论】:

    标签: windows-phone-7 silverlight-3.0


    【解决方案1】:

    虽然使用 XAML 特性语法会产生误导,但在将绑定分配给 XAML 中的属性时,调用的是 SetBinding,而不是 SetValue 或 CLR 设置器。

    【讨论】:

    • 对不起,瑞恩,我没有得到你。
    • 我可能会更好地格式化。当您使用绑定在 XAML 中对依赖项属性进行分配时。 WPF 将在您的控件上调用 SetBinding,因此永远不会调用 setter。
    • 我现在明白了。所以这意味着我需要改变一些东西,否则它根本不起作用?我在定义 DependencyProperty 时更改了添加回调方法的行为,但它也没有被调用。
    • 绑定将起作用。 EllipsisTextBlock 的宽度可能为零,因为 TextBlock 的 Visibility 设置为 Collapsed(这意味着不占用空间)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    相关资源
    最近更新 更多