Bir kontrol kitaplığı yazıyorum. Bu kütüphanede kullanıcı UIElements ile doldurulmuş bazı özel paneller bulunmaktadır. Bunu yazarsanız,Ekli bir özelliği başka bir bağımlılık özelliğine bağlayamıyorum
// Attached properties common to every UIElement
public static class MyLibCommonProperties
{
public static readonly DependencyProperty TitleProperty =
DependencyProperty.RegisterAttached(
"Title",
typeof(String),
typeof(UIElement),
new FrameworkPropertyMetadata(
"NoTitle", new PropertyChangedCallback(OnTitleChanged))
);
public static string GetTitle(UIElement _target)
{
return (string)_target.GetValue(TitleProperty);
}
public static void SetTitle(UIElement _target, string _value)
{
_target.SetValue(TitleProperty, _value);
}
private static void OnTitleChanged(DependencyObject _d, DependencyPropertyChangedEventArgs _e)
{
...
}
}
Sonra: Benim lib her alt öğe bir "Başlık" özelliği olması gerekir beri, şu yazdım
<dl:HorizontalShelf>
<Label dl:MyLibCommonProperties.Title="CustomTitle">1</Label>
<Label>1</Label>
<Label>2</Label>
<Label>3</Label>
</dl:HorizontalShelf>
her şey çalışıyor ve özellik belirtilen alır değer, ama bu gibi bazı diğer UIElement DependencyProperty o mülkü bağlamak denerseniz:
<dl:HorizontalShelf>
<Label dl:MyLibCommonProperties.Title="{Binding ElementName=NamedLabel, Path=Name}">1</Label>
<Label>1</Label>
<Label>2</Label>
<Label Name="NamedLabel">3</Label>
</dl:HorizontalShelf>
bir özel durum olacaktır: "bir 'setTitle' mülkiyet ayarlanamaz 'bağlama' 'Etiket' türü. A DependencyObject bir DependencyProperty sadece ayarlanabilir 'Bağlanma'. Adı 'Ben MyLibCommonProperties tanımlanan diğer bazı ekli özelliğine bağlamak"
Ne eksik? Bağlama yerine bağlanabilen eğer iyi çalışıyor görünüyor'.
peşinteşekkürler.
Merhaba, MyLibCommonProperties DependecyObject –
Sadece bir tahmin kaynaklanıyor olmalı, ama, DependencyObject için Get/SetTitle ilk parametreler değil değişebilir UIElement . Ayrıca, Attache özelliğinizi kaydettirirken, üçüncü parametre, istenen hedef yerine ekli mülkün sahibi olmalıdır. MyLibCommonProperties olarak değiştirin. – dowhilefor
'HorizontalShelf' nedir? Bunun yerine StackPanel veya benzeri yerleşik kontrolde denediniz mi? Her şey iyi görünüyor. 'HorizontalShelf', çocuklarını mantıksal çocuklar olarak tanıyan özel bir kontrol olduğunu varsayabilirim. Buraya bakın: http://kentb.blogspot.com/2008/10/customizing-logical-children.html –