हां यह संभव है और यहां कुछ कोड है जिसका उपयोग मैंने यूजरकंट्रोल से प्रस्तुतियों को लिखने के लिए किया है, जिनमें डीपी हैं।
मुझे इसे थोड़ा प्यार नहीं है, लेकिन यह काम करता है। मुझे यह भी लगता है कि यह महान विषय है और शायद कुछ कोड कुछ बेहतर उत्तरों को पाने में मदद करेंगे!
चीयर्स,
बेरी
UserControl XAML
<Button x:Name="btnAddNewItem" Style="{StaticResource blueButtonStyle}" >
<StackPanel Orientation="Horizontal">
<Image Source="{resx:Resx ResxName=Core.Presentation.Resources.MasterDetail, Key=bullet_add}" Stretch="Uniform" />
<Label x:Name="tbItemName" Margin="5" Foreground="White" Padding="10, 0">_Add New [item]</Label>
</StackPanel>
</Button>
UserControl
public partial class AddNewItemButton : UserControl
{
...
#region Item Name
public static readonly DependencyProperty ItemNameProperty = DependencyProperty.Register(
"ItemName", typeof(string), typeof(AddNewItemButton),
new FrameworkPropertyMetadata(OnItemNameChanged));
public string ItemName
{
get { return (string)GetValue(ItemNameProperty); }
set { SetValue(ItemNameProperty, value); }
}
public string ButtonText { get { return (string) tbItemName.Content; } }
private static void OnItemNameChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
// When the item name changes, set the text of the item name
var control = (AddNewItemButton)obj;
control.tbItemName.Content = string.Format(GlobalCommandStrings.Subject_Add, control.ItemName.Capitalize());
control.ToolTip = string.Format(GlobalCommandStrings.Subject_Add_ToolTip, control.ItemName);
}
#endregion
#region Command
public static readonly DependencyProperty CommandProperty = DependencyProperty.Register(
"Command", typeof(ICommand), typeof(AddNewItemButton),
new FrameworkPropertyMetadata(OnCommandChanged));
public ICommand Command
{
get { return (ICommand)GetValue(CommandProperty); }
set { SetValue(CommandProperty, value); }
}
private static void OnCommandChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
// When the item name changes, set the text of the item name
var control = (AddNewItemButton)obj;
control.btnAddNewItem.Command = control.Command;
}
#endregion
}
पीछे कोड
एक और UserControl दिखा संगठन
<UserControl ...
xmlns:uc="clr-namespace:Smack.Core.Presentation.Wpf.Controls.UserControls"
>
<DockPanel LastChildFill="True">
...
<uc:AddNewItemButton x:Name="_addNewItemButton" Margin="0,0,10 0" DockPanel.Dock="Right" />
...
</DockPanel>
</UserControl>
इस पर फिर से विचार लिया - आप DataBinding के साथ माता-पिता तत्वों और पूर्वज का एक RelativeSource तक पहुँचने की कोशिश की? यहां एक अच्छा [SO उत्तर] है (http://stackoverflow.com/questions/84278/how-do-i-use-wpf-bindings-with-relativesource) यदि ऐसा है तो। यदि यह एक अच्छा समाधान की तरह प्रतीत नहीं होता है तो आप समस्या को स्पष्ट करने के लिए कुछ कोड पोस्ट करना चाह सकते हैं। चीयर्स – Berryl