0
從this blog post開始,我實現了這兩個類並嘗試了XAML,並且它可以工作。我想製作一個自定義控件,這樣做是這樣的,所以我寫了這個。但是,它不會重新着色圖像。它只產生無色圖像。我假設我在綁定上做了錯誤的事情,但我不確定。爲什麼這個代碼隱藏綁定工作?
編輯:改變的代碼是一個SSCCE
public class ColorableImage : Image
{
// Used by the converter to color the source
public static readonly DependencyProperty ColorProperty;
static ColorableImage()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(ColorableImage), new FrameworkPropertyMetadata(typeof(ColorableImage)));
ColorProperty = DependencyProperty.Register("Color", typeof(Color), typeof(ColorableImage), new FrameworkPropertyMetadata(new PropertyChangedCallback(ColorPropertyChanged)));
}
private static void ColorPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
ColorableImage castedSender = (ColorableImage)sender;
Image img = new Image();
img.Source = castedSender.Source;
Color color = castedSender.Color;
Binding binding = new Binding("Source")
{
Source = img,
Converter = new HighlightImageConverter(),
ConverterParameter = color
};
castedSender.SetBinding(ColorableImage.SourceProperty, binding);
}
public Color Color
{
get { return (Color)GetValue(ColorProperty); }
set { SetValue(ColorProperty, value); }
}
}
}
是的 - 該屬性過去被稱爲ColorOverlay,我忘記與它一起更改該字符串。謝謝你提醒我。我將考慮爲Color創建另一個處理程序,而不是一個setter –
如果您不想花時間寫DP代碼,您可以使用一些代碼片段。我使用WPF博士http://drwpf.com/blog/2007/11/17/my-wpf-code-snippets/ – Dmitry
看我的文章編輯 –