System.Windows.Controls.Image
にいくつかのメソッドと変数を追加します。しかし、私が知る限り、WPFは継承を悪い習慣とみなします。WPFコントロールクラスを拡張する
したがって、唯一の方法はUserControl
ですか?私は本当にこれを避けたいと思います。なぜなら、要素の使用がより複雑になるからです(たとえば、Image.Source
の代わりにUserControl.Image.Source
と呼ぶ必要があります)。
オプションはありますか?
System.Windows.Controls.Image
にいくつかのメソッドと変数を追加します。しかし、私が知る限り、WPFは継承を悪い習慣とみなします。WPFコントロールクラスを拡張する
したがって、唯一の方法はUserControl
ですか?私は本当にこれを避けたいと思います。なぜなら、要素の使用がより複雑になるからです(たとえば、Image.Source
の代わりにUserControl.Image.Source
と呼ぶ必要があります)。
オプションはありますか?
attached propertiesとそれに関連するPropertyChangedCallbackメソッドを使用して、必要な機能を実装する方法はありますか?例:
public class ImageProperties
{
public static readonly DependencyProperty ByteEncodedStringProperty = DependencyProperty.RegisterAttached("ByteEncodedString", typeof(string), typeof(ImageProperties), new PropertyMetadata(null, ByteEncodedStringPropertyChanged));
private static void ByteEncodedStringPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args)
{
Image image = sender as Image;
if (image != null)
{
ImageSource imageSource = DecodeByteEncodedStringImage(args.NewValue);
image.Source = imageSource;
}
}
public static string GetByteEncodedString(DependencyObject obj)
{
return (string)obj.GetValue(ByteEncodedStringProperty);
}
public static void SetByteEncodedString(DependencyObject obj, string value)
{
obj.SetValue(ByteEncodedStringProperty, value);
}
}
このコンセプトでメソッドを追加することは可能ですか?たとえば、私のクラスにFadeOutのpublic関数を持たせたいとします。この関数は、Imageに特定のアニメーションを再生させます。 – JustLogin
静的クラスの拡張メソッドはどうですか?例については
:
public static class ExtensionMethods
{
public static bool MyExtendedMethod(this System.Windows.Controls.Image source)
{
// do something
return true;
}
}
あなたはいじったときにすることを 'Source'と呼ばれる依存関係プロパティを公開することができ、あなたの_inner_はあなたが何をしたいメソッドや変数の詳細特異的であることができる' Image.Source' – MickyD
触れますか? * "WPFは継承を悪い習慣とみなします" * - まったく真実ではありません - WPFは単に柔軟性があり、何かをサブスクラスする必要はほとんどありません。 – Sinatr
@MickyDはい、わかっています。しかし、私はちょうどImageクラスでいくつかの余分なメソッドが必要なときに、全体のUserControlを使用すると、多くの不必要なものをもたらします。 – JustLogin