2011-07-26 45 views
0

我已經創建了一個名爲EllipsisTextBlock用一個DependencyProperty旨在接收其它控件的屬性值的自定義控制:綁定其他控件的屬性與Silverlight和Windows Phone的自定義控制7

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

在EllipsisTextBlock的父格,我「M結合這樣的其他控件的屬性:

<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屬性的設置是從未叫:

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

順便說一句,EllipsisTextBlock類有兩個其他的DependencyProperties工作。

任何想法?

感謝

回答

0

雖然使用XAML屬性語法誤導,SetBinding叫,不是的SetValue也不當你將一個綁定到XAML屬性的CLR制定者。

+0

對不起,瑞恩,我沒有得到你。 – Cesar

+0

我可能可以更好地格式化。當您使用綁定在XAML中對您的依賴項屬性進行賦值時。 WPF會在你的控件上調用SetBinding,所以setter永遠不會被調用。 –

+0

我現在明白了。所以這意味着我需要改變一些東西,否則它根本無法工作?在定義DependencyProperty時,我改變了添加回調方法的行爲,但它也沒有調用。 – Cesar

相關問題