2008-09-12 7 views
5

Je voudrais être en mesure de programme lier des données aux propriétés de dépendance sur un BitmapEffect. Avec un FrameworkElement comme TextBlock il existe une méthode de SetBinding où vous pouvez par programmation faire ces liaisons comme:WPF - Programmatic lie un BitmapEffect

myTextBlock.SetBinding(TextBlock.TextProperty, new Binding("SomeProperty")); 

Et je sais que vous pouvez le faire en XAML droite (comme on le voit ci-dessous)

<TextBlock Width="Auto" Text="Some Content" x:Name="MyTextBlock" TextWrapping="Wrap" > 
    <TextBlock.BitmapEffect> 
     <BitmapEffectGroup> 
      <OuterGlowBitmapEffect x:Name="MyGlow" GlowColor="White" GlowSize="{Binding Path=MyValue}" /> 
     </BitmapEffectGroup> 
    </TextBlock.BitmapEffect> 
</TextBlock> 

Mais je ne peut pas comprendre comment accomplir ceci avec C# parce que BitmapEffect n'a pas de méthode SetBinding.

J'ai essayé:

myTextBlock.SetBinding(OuterGlowBitmapEffect.GlowSize, new Binding("SomeProperty") { Source = someObject }); 

Mais il ne fonctionne pas.

Répondre

11

Vous pouvez utiliser BindingOperation.SetBinding:

Binding newBinding = new Binding(); 
newBinding.ElementName = "SomeObject"; 
newBinding.Path = new PropertyPath(SomeObjectType.SomeProperty); 
BindingOperations.SetBinding(MyGlow, OuterGlowBitmapEffect.GlowSizeProperty, newBinding); 

Je pense qu'il faut faire ce que vous voulez.