Проблема Я создаю кучу эллипсов и хочу, чтобы их прозрачность заливки кистью изменялась в зависимости от значения ползунка.Я связываю ползунок со свойством и связываю свойство FillProperty эллипса с тем же свойством через конвертер.Когда я обновляю слайдер, эллипсы не меняются.Однако они меняются, когда я их воссоздаю.
Я интуитивно понимаю, что привязка к эллипсу не видит изменений, которые я делаю через другую привязку, и поэтому не обновляется.Я не знаю, какой флаг установить для того, чтобы он каскадно изменял внесенные мной свойства или нужно ли обернуть свойство каким-либо необычным объектом.
Буду признателен за любую помощь,
Технические подробности У меня есть класс (: Window), который объявляет (public, auto) свойство с именем BubbleOpacity
.В какой-то момент я создаю слайдер и привязываю его (Двусторонний) к своей собственности.
var slider = new Slider { Width = 150, Minimum = 0, Maximum = 1, Value = 0.2 };
slider.SetBinding(RangeBase.ValueProperty, new Binding("BubbleOpacity") { Source = this, Mode = BindingMode.TwoWay
Пока все хорошо.Затем я создаю несколько эллипсов.Один из этих эллипсов может выглядеть так:
var ellipse = new Ellipse {/ * Я установил Width, Height, Margin, Stroke ... etc.};ellipse.SetBinding (Shape.FillProperty, new Binding ("BubbleOpacity") {Source = this, Converter = new BrushOpacityConverter (new SolidColorBrush (Colors.LightGoldenrodYellow))});
Класс BrushOpacityConverter
просто создает классновая кисть, основанная на переданном значении непрозрачности.Это выглядит так, если вы должны знать.
class BrushOpacityConverter : IValueConverter
{
private readonly Brush _brush;
public BrushOpacityConverter(Brush brush)
{
_brush = brush;
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var brushclone = _brush.CloneCurrentValue();
brushclone.Opacity = (double) value;
return brushclone;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
Если я установлю точки останова на метод Convert, я вижу, что он не вызывается при обновлении моего ползунка.Когда я воссоздаю эллипсы, он вызывается (правильно).