Als Anfänger in WPF, ich versuche, eine bestimmte Benutzerkontrolle in meiner Mainwindow Ansicht Komponente in WPF wieder zu verwenden mehrmals mit verschiedenen EigenschaftenReusing WPF Benutzersteuerelemente in Mainwindow
Die Usercontrol FILE enthält ein einfaches Layout der enthält eine Schaltfläche, die ein Bild mit einem Textfeldfeld enthält. In meiner Hauptform plane ich, dieses Benutzersteuerelement mehrere Male zu verwenden. d.h. mit verschiedenen Bildern.
Um die Bild vom MainWindow.xaml stelle ich eine DependencyProperty innerhalb des Usercontrol-Code erstellt haben, die mir das Image File Eigenschaft festlegen können.
public partial class FileSelectionView : UserControl
{
public string GetFileSelectImage(DependencyObject obj)
{
return (string)obj.GetValue(FileSelectImageProperty);
}
public void SetFileSelectImage(DependencyObject obj, string value)
{
obj.SetValue(FileSelectImageProperty, value);
}
// Using a DependencyProperty as the backing store for FileSelectImage. This enables animation, styling, binding, etc...
public static readonly DependencyProperty FileSelectImageProperty =
DependencyProperty.RegisterAttached("FileSelectImage", typeof(string), typeof(FileSelectionView), new PropertyMetadata("flash.png", OnImageFileChanged));
private static void OnImageFileChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (DesignerProperties.GetIsInDesignMode(d)) return;
FileSelectionView fv = ((FileSelectionView)(FrameworkElement)d);
if (fv != null)
{
Image tb = (Image)fv.imgButtonFileSelect;
//Image tb = ((System.Windows.Controls.Image)(FrameworkElement)d);
//var imageConverter = new ImageSourceConverter();
if (tb != null)
{
tb.Source = new BitmapImage(new Uri("Images\\" + (string)e.NewValue, UriKind.Relative));
}
}
}
public FileSelectionView()
{
InitializeComponent();
}
}
Jetzt, wo das Bild ist Eigentum ausgesetzt ist, nehme ich an, dass es über MainWindow.xaml
eingestellt werden kann<StackPanel Orientation="Vertical" Grid.Column="0" Grid.ColumnSpan="2">
<View:FileSelectionView FileSelectImage="image01.png"/>
<View:FileSelectionView FileSelectImage="image02.png"/>
.. so on
</StackPanel>
Ich bin in diesem Zustand fest. Wie stelle ich diese Abhängigkeitseigenschaft (usercontrol) MainWindow.xaml zur Verfügung?
keine angebracht DP machen, verwenden Sie 'DependencyProperty.Register' und auch eine gemeinsame Wrapper Eigenschaft' FileSelectImage' (2 statische get/set-Methoden wäre schaffen nicht notwendig). Siehe auch http://stackoverflow.com/documentation/wpf/2914/dependency-properties#t=201610250847452829325 – ASh