WPF — программная привязка к BitmapEffect
-
09-06-2019 - |
Вопрос
Я хотел бы иметь возможность программно привязать некоторые данные к свойствам зависимостей на Растровый эффект.С помощью FrameworkElement, такого как TextBlock, существует метод SetBinding, с помощью которого вы можете программно выполнять такие привязки, например:
myTextBlock.SetBinding(TextBlock.TextProperty, new Binding("SomeProperty"));
И я знаю, что вы можете сделать это в чистом XAML (как показано ниже).
<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>
Но я не могу понять, как это сделать с помощью C#, поскольку у BitmapEffect нет метода SetBinding.
Я пробовал:
myTextBlock.SetBinding(OuterGlowBitmapEffect.GlowSize, new Binding("SomeProperty") { Source = someObject });
Но это не работает.
Решение
Вы можете использовать BindingOperation.SetBinding:
Binding newBinding = new Binding();
newBinding.ElementName = "SomeObject";
newBinding.Path = new PropertyPath(SomeObjectType.SomeProperty);
BindingOperations.SetBinding(MyGlow, OuterGlowBitmapEffect.GlowSizeProperty, newBinding);
Я думаю, это должно делать то, что вы хотите.
Не связан с StackOverflow