-1

次の WPF コントロールがあり、横に画像のあるテキストを表示するために使用されます

XAML コード

<UserControl x:Class="WFWorkSpaceWPF.UserControls.StackedImageTextCtl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         Name="StackedImageText"
         >
<Grid>
    <StackPanel Orientation="Horizontal">
        <Image Source="{Binding ElementName=StackedImageText, Path=ImageSource}" />
        <TextBlock Text="{Binding ElementName=StackedImageText, Path=Text}" />
    </StackPanel>
</Grid>

CS

 public partial class StackedImageTextCtl : UserControl
{
    public StackedImageTextCtl()
    {
        InitializeComponent();
    }
    #region "Properties"
    public string Text
    {
        get { return (string)GetValue(TextProperty); }
        set { SetValue(TextProperty, value); }
    }

    public static readonly DependencyProperty TextProperty =
      DependencyProperty.Register("Text", typeof(string), typeof(StackedImageTextCtl), new UIPropertyMetadata(""));

    public ImageSource ImageSource
    {
        get { return (ImageSource)GetValue(ImageSourceProperty); }
        set { SetValue(ImageSourceProperty, value); }
    }

    public static readonly DependencyProperty ImageSourceProperty =
       DependencyProperty.Register("ImageSource", typeof(ImageSource), typeof(StackedImageTextCtl), new UIPropertyMetadata(null));
    #endregion
}

私のプロジェクトでは、これらのコントロールの一部として追加される他の 3 つのユーザー コントロールでこのコントロールを再利用したいと考えています。それとこれらの 3 つのコントロールはコンテナー ウィンドウから値を取得し、XAML をスローします。これを行う方法の 1 つは、これら 3 つのユーザー コントロールのそれぞれでプロパティの定義を複製し、AddOwner 機能を使用することですが、コードで繰り返しを必要としないより良いアプローチ、誰かが私にそのような方法を教えてもらえますか?.

4

1 に答える 1