我创建了一个名为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可以工作。
有什么想法吗?
由于
答案 0 :(得分:0)
虽然使用XAML属性语法会产生误导,但在为XAML中的属性分配绑定时,会调用SetBinding,而不是SetValue,也不会调用CLR setter。