2011-07-21 16 views
5

Bir Visiblox grafiğinde Y ekseni için bir LinearAxis kullanıldığında, hala araç takımına sahipken belirli bir sayıda büyük onay işareti kullanması için ekseni zorlamak istiyorum eksen aralığını ve onay işareti konumlarını otomatik olarak hesaplar. Örneğin, birincil ve ikincil bir Y ekseni olabilir ve her iki eksende de yatay kılavuz çizgileri çakışacak şekilde aynı sayıda büyük kenenin kullanılmasını istiyorum. Mümkün mü?Visiblox çizelgesinde belirli sayıda büyük onay işaretlerinin kullanılmasına zorlama ekseni

cevap

4

Birkaç seçenek var. Öncelikle büyük kenelerin dağılımını zorlamak için MajorTickInterval'u ayarlayabilirsiniz. Kullanım durumunuza bağlı olarak, eksenin gerçek aralığına bakmanız ve mantıklı bir aralık elde etmek istediğiniz kenelerin sayısına bölünmeniz gerekebilir.

Diğer bir alternatif ise, eksenin alt sınıfını çizmek ve eksenin keneleri nereye yerleştireceğini belirlemek için kullandığı GetMajorTickValues ​​yöntemini geçersiz kılmaktır.

4

Birincil ve ikincil ekseninizdeki değerler arasında bir ilişkiyi zorunlu kılmanız gerekiyorsa, bu, ElementName bağlamasıyla gerçekleştirilebilir. aşağıdaki gibi Örneğin, birincil ekseninin hesaplanan zaman aralığıyla için ActualMajorTickInterval ikinci eksen MajorTickInterval bağlanabildiği:

<Grid x:Name="LayoutRoot" Background="White"> 
    <vis:Chart x:Name="chart"> 
    <vis:Chart.YAxis> 
     <vis:LinearAxis x:Name="primaryAxis"/> 
    </vis:Chart.YAxis> 
    <vis:Chart.SecondaryYAxis> 
     <vis:LinearAxis MajorTickInterval="{Binding ElementName=primaryAxis, Path=ActualMajorTickInterval}"/> 
    </vis:Chart.SecondaryYAxis> 
    </vis:Chart> 
</Grid> 

Ancak, ion veri olarak neden olmaz, her bir eksen için aynı kene aralığına sahip, kayıt Eşleşmek için büyük kene kılavuz çizgileri. Bu durumda, aralık Alse bağlamak isteyebilirsiniz: Eğer daha karmaşık mantığı gerekiyorsa

<Grid x:Name="LayoutRoot" Background="White"> 
    <vis:Chart x:Name="chart"> 
    <vis:Chart.YAxis> 
     <vis:LinearAxis x:Name="primaryAxis"/> 
    </vis:Chart.YAxis> 
    <vis:Chart.SecondaryYAxis> 
     <vis:LinearAxis Range="{Binding ElementName=primaryAxis, Path=ActualRange}" 
         MajorTickInterval="{Binding ElementName=primaryAxis, Path=ActualMajorTickInterval}"/> 
    </vis:Chart.SecondaryYAxis> 
    </vis:Chart> 
</Grid> 

, değerin dönüştürücüler ile bunu mümkün olabilir.

+0

Örnek için teşekkürler, ancak bu düşündüğüm gibi değil. Benim durumumda, bir eksen üzerindeki veri 0 ile 1 arasında, diğeri ise 10,000 ile 15.000 arasında olabilir. Amaç o zaman mutlak kene aralıkları veya aralıkları üzerinde bağlayıcı yapmak değil, sadece belirli bir sayıda kene kullanılması şartıyla ikincil ekseni güzel bir kene kümesi çizmek için zorlamaktır. Ayrıca, varsayılan aralığı alamıyorum ve istediğim kenelerin sayısına bölüyorum, çünkü kene konumları "hoş" olmayabilir. Belki de buradaki tek yol kene konumlandırma algoritmasını yeniden yazmaktır. – Abiel

İlgili konular