問題 我創建了一串橢圓,我希望它們的填充筆刷不透明度根據滑塊值進行更改。我將滑塊綁定到一個屬性,並通過轉換器將橢圓的FillProperty綁定到相同的屬性。當我更新滑塊時,橢圓不會改變。但是,當我重新創建它們時,它們會發生變化。WPF雙重約束
我覺得Ellipse綁定沒有看到我通過其他綁定進行的更改,因此不會更新。我不知道要設置什麼標誌使其將級聯我正在對屬性進行的更改,或者是否需要將屬性包裝在某種花哨的對象中。
希望有任何幫助。
技術細節 我有一個類:聲明一(公共,自動)稱爲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 ...等等 }; (新的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方法上設置了斷點,我發現當我更新滑塊時它不會被調用。它在我重新創建橢圓時確實會被調用(正確)。
非常感謝,作品廣告。如果想要用google找到這些東西,這將會花費很多時間,所以再次感謝您輸入解決方案。 =) – Gleno 2011-01-27 16:45:37