Çocuklardan birini (ControlTemplate'den) salt okunur bir özellik aracılığıyla ortaya çıkaran bir WPF Denetimi var. Şu anda sadece bir CLR özelliği, ama bunun bir fark yarattığını düşünmüyorum.Bir denetimin yuvalanmış özelliğini (özellik değerinin özelliği) ayarlamak için XAML kullanabilir miyim?
Ana denetimi başlattığım XAML'den çocuk denetimindeki özelliklerden birini ayarlayabilmek istiyorum. (Aslında, kendisine bağlamak istiyorum, ama iyi bir ilk adım olacaktır ayarı düşünüyorum.) Burada
bazı kod: Buradapublic class ChartControl : Control
{
public IAxis XAxis { get; private set; }
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
this.XAxis = GetTemplateChild("PART_XAxis") as IAxis;
}
}
public interface IAxis
{
// This is the property I want to set
double Maximum { get; set; }
}
public class Axis : FrameworkElement, IAxis
{
public static readonly DependencyProperty MaximumProperty = DependencyProperty.Register("Maximum", typeof(double), typeof(Axis), new FrameworkPropertyMetadata(20.0, FrameworkPropertyMetadataOptions.AffectsRender, OnAxisPropertyChanged));
public double Maximum
{
get { return (double)GetValue(MaximumProperty); }
set { SetValue(MaximumProperty, value); }
}
}
Ben iç içe ayarlama düşünebilirsiniz iki yolu var XAML özelliği (hiçbiri derleme):
<!--
This doesn't work:
"The property 'XAxis.Maximum' does not exist in XML namespace 'http://schemas.microsoft.com/winfx/2006/xaml/presentation'."
"The attachable property 'Maximum' was not found in type 'XAxis'."
-->
<local:ChartControl XAxis.Maximum="{Binding Maximum}"/>
<!--
This doesn't work:
"Cannot set properties on property elements."
-->
<local:ChartControl>
<local:ChartControl.XAxis Maximum="{Binding Maximum}"/>
</local:ChartControl>
Bu mümkün mü?
Bu olmadan, DP'leri (şablonda) çocuklara bağlanan ana kontrole maruz bırakmam gerekecek. O kadar da kötü değil sanırım, ama ana kontrolde bir özellik patlamasından kaçınmaya çalışıyordum.
Şerefe.
Evet, ben de öyle düşünmüştüm:
Böyle bir şey yapmak zorunda. :-( Üst düzey kontrolümde ekstra DP'ler, o zaman! – Swythan
BTW. XAxis özelliğinin mevcut değerini değiştirmek istemediğimden, örneğin XAML'deki gibi yapamam. Axis'in yeni örneği – Swythan
WPF'nin yuvalanmış özelliklere bağlanmayı desteklememesinin sebebi nedir? Aksi halde bunları çoğaltabilirsiniz. – Vitalij