我有一個小問題,找不到任何解決方案。也許這是Visual Studio中的一個問題。WPF use override XAML中繼承類的屬性
我創建了一個從Image繼承的新類。然後我重寫Source屬性。
class GifImage : Image
{
public new ImageSource Source
{
get { return base.Source; }
set
{
MesssageBox("new source property");
base.Source = value;
}
}
}
如果我在代碼
GifImage gifImage = new GifImage();
gifImage.Source = gifimage2;
則源將被正確地設置爲GifImage和在MessageBox將顯示設定源。
但如果我設置源在XAML的代碼:
<my1:GifImage Stretch="Uniform" Source="/WpfApplication1;component/Images/Preloader.gif" />
然後將圖像的來源屬性設置,並在MessageBox不需額外顯示。
我的想法是設置System.ComponentModel.Browsable-Attribute,認爲繼承GifImage類中的屬性在Visual Studio中不可見,並且它使用父類的source屬性。
[Browsable(true)]
public new ImageSource Source
但是,這仍然無法正常工作。
有人有同樣的問題或/和解決方案嗎?
對於第一溶液我得到一個ArgumentException,該PropertyMetadata仍然由類型「圖像」 – Rafael
註冊我發現的故障 在SourceProperty.OverrideMetadata(typeof運算(Image),新的FrameworkPropertyMetadata(新的PropertyChangedCallback(SourcePropertyChanged))); 我必須使用我的控件的typeof來覆蓋它。這裏typeof(GifImage) – Rafael
太棒了,很高興你有它的工作。我正準備製作一個小應用程序來找出我做錯了什麼。我將更新答案以更改類型。 – Rob