2010-08-29 13 views
19

के साथ WPF टूलकिट चार्ट की किंवदंती छुपाएं मैं WPF टूलकिट (लाइनसाइरीज के साथ) से चार्ट का उपयोग करने की कोशिश कर रहा हूं और मुझे बिल्कुल एक किंवदंती नहीं चाहिए। मुझे इसकी आवश्यकता है क्योंकि मेरे पास 10 अलग-अलग चार्ट हैं जो प्रत्येक एक अलग स्रोत से डेटा के साथ हैं और मैं स्क्रीन अचल संपत्ति को बचाने के लिए सभी 10 के लिए एक किंवदंती खींचना चाहता हूं।एक से अधिक डेटा श्रृंखला

डिफ़ॉल्ट रूप से किंवदंती उस क्षण प्रकट होती है जब आप दूसरी लाइन श्रृंखला जोड़ते हैं। क्या इसे देखने से रोकने के लिए कोई रास्ता है?

धन्यवाद,

स्प्राइट।

+0

मैं WPF टूलकिट के फरवरी 2010 रिलीज़ उपयोग कर रहा हूँ। – sprite

उत्तर

43

ऐसा कोई विशेष रूप से साफ तरीका प्रतीत नहीं होता है। एक साधारण दृष्टिकोण LegendStyle का उपयोग कर शून्य लीजेंड की चौड़ाई सेट करने के लिए है:

<charting:Chart> 
    <charting:Chart.Template> 
     <ControlTemplate TargetType="{x:Type charting:Chart}"> 
      <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}"> 
       <Grid> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="Auto" /> 
         <RowDefinition Height="*" /> 
        </Grid.RowDefinitions> 
        <datavis:Title Content="{TemplateBinding Title}" Style="{TemplateBinding TitleStyle}" /> 
        <chartingprimitives:EdgePanel Name="ChartArea" Style="{TemplateBinding ChartAreaStyle}" Grid.Row="1" Margin="0,15,0,15"> 
         <Grid Panel.ZIndex="-1" Style="{TemplateBinding PlotAreaStyle}" /> 
         <Border Panel.ZIndex="10" BorderBrush="#FF919191" BorderThickness="1" /> 
        </chartingprimitives:EdgePanel> 
       </Grid> 
      </Border> 
     </ControlTemplate> 
    </charting:Chart.Template> 

निम्नलिखित का प्रयोग करें नामस्थान:

<charting:Chart> 
    <charting:Chart.LegendStyle> 
     <Style TargetType="datavis:Legend"> 
      <Setter Property="Width" Value="0" /> 
     </Style> 
    </charting:Chart.LegendStyle> 

एक और अधिक कठोर दृष्टिकोण से एक के साथ ControlTemplate कि एक पौराणिक कथा को शामिल नहीं करता बदलने के लिए है:

xmlns:charting="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit" 
xmlns:datavis="clr-namespace:System.Windows.Controls.DataVisualization;assembly=System.Windows.Controls.DataVisualization.Toolkit" 
xmlns:chartingprimitives="clr-namespace:System.Windows.Controls.DataVisualization.Charting.Primitives;assembly=System.Windows.Controls.DataVisualization.Toolkit" 
+1

धन्यवाद Quarermeister। मैंने दूसरा दृष्टिकोण लिया। मैं अभी जवाब खुद पोस्ट करने आया था, लेकिन आपने मुझे परेशानी बचाई। मैंने साजिश क्षेत्र और शीर्षक के चारों ओर मार्जिन को कम से कम करने के लिए भी इसका इस्तेमाल किया ताकि मैं अपने सभी चार्टों को जितनी संभव हो उतनी छोटी जगह में ढेर कर सकूं। – sprite

+3

हे। क्या आप स्पष्टीकरण दे सकते हैं: डाटाविस नामस्थान क्या है? –

8

मैं Quarermeister के दृष्टिकोण की कोशिश की लेकिन उसकी TargetType विशेषता मैं नहीं था कि एक "datavis" विधानसभा के लिए एक संदर्भ है।

<chartingToolkit:Chart.LegendStyle> 
    <Style TargetType="Control"> 
     <Setter Property="Width" Value="0" /> 
     <Setter Property="Height" Value="0" /> 
    </Style> 
</chartingToolkit:Chart.LegendStyle> 

मैं भी कथा के बिना क्योंकि चार्ट के दाईं ओर गद्दी जोड़ने के लिए किया था मेरी x- अक्ष अंतराल लेबल चार्ट क्षेत्र के बाहर का विस्तार किया गया।

+3

आपके पास यह है, आपको केवल नामस्थान जोड़ने की आवश्यकता है: xmlns: datavis = "clr-namespace: System.Windows.Controls.DataVisualization; assembly = System.Windows.Controls.DataVisualization.Toolkit" – codekaizen

9

बहुत अधिक समझदार दृष्टिकोण ...

<charting:LineSeries.LegendItemStyle > 
    <Style TargetType="{x:Type charting:LegendItem}"> 
    <Setter Property="Visibility" Value="Collapsed"/> 
    </Style> 
</charting:LineSeries.LegendItemStyle> 

0 ... चियर्स के लिए सेटिंग मूल्यों से मेरे लिए बेहतर काम किया! सूखी के लिए

+1

मैं मानता हूं कि ऐसा लगता है कि ऐसा लगता है एक और समझदार दृष्टिकोण, लेकिन मेरे पास कुछ मुद्दे थे। सबसे पहले उपर्युक्त दृष्टिकोण केवल वस्तुओं को ध्वस्त करता है और इसलिए लीजेंड बॉक्स अभी भी दिखाई देता है। (इसके बजाय शैली को शैली में लागू करके फिक्स्ड, ध्यान दें कि लीजेंड क्लास चार्ट के लिए एक अलग नेमस्पेस में है)। फिर मैं दूसरे अंक में भाग गया: संकुचित डिज़ाइन मोड में तुरंत काम करना प्रतीत होता है लेकिन रीफ्रेश के बाद (उदाहरण के लिए प्रोजेक्ट का निर्माण) और ऐप चलाने पर किंवदंती दिखाई देती है। इस प्रकार अंत में मुझे चौड़ाई = 0 सेटर भी जोड़ना पड़ा :( – Ben

5

संलग्न संपत्ति, आसान उपयोग:

<charting:Chart helpers:ChartHelpers.IsLegendHidden="True" ...

public static class ChartHelpers 
    { 
     static ChartHelpers() 
     { 
      HideLegendStyle = new Style(typeof(Legend)); 
      HideLegendStyle.Setters.Add(new Setter(Legend.WidthProperty, 0.0)); 
      HideLegendStyle.Setters.Add(new Setter(Legend.HeightProperty, 0.0)); 
      HideLegendStyle.Setters.Add(new Setter(Legend.VisibilityProperty, Visibility.Collapsed)); 
     } 

     /// <summary>Gets a <see cref="Style"/> to hide the legend.</summary> 
     public static readonly Style HideLegendStyle; 

     #region IsLegendHidden 

     [Category("Common")] 
     [AttachedPropertyBrowsableForType(typeof(Chart))] 
     public static bool GetIsLegendHidden(Chart chart) 
     { 
      return (bool)chart.GetValue(IsLegendHiddenProperty); 
     } 
     public static void SetIsLegendHidden(Chart chart, bool value) 
     { 
      chart.SetValue(IsLegendHiddenProperty, value); 
     } 

     public static readonly DependencyProperty IsLegendHiddenProperty = 
      DependencyProperty.RegisterAttached(
       "IsLegendHidden", 
       typeof(bool), // type 
       typeof(ChartHelpers), // containing static class 
       new PropertyMetadata(default(bool), OnIsLegendHiddenChanged) 
       ); 

     private static void OnIsLegendHiddenChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 
     { 
      OnIsLegendHiddenChanged((Chart)d, (bool)e.NewValue); 
     } 
     private static void OnIsLegendHiddenChanged(Chart chart, bool isHidden) 
     { 
      if (isHidden) 
      { 
       chart.LegendStyle = HideLegendStyle; 
      } 
     } 

     #endregion IsLegendHidden 
    } 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^