2009-06-10 20 views
6

मेरे पास उपयोगकर्ता नियंत्रण के अंदर एक कस्टम पैनल के साथ एक आइटम नियंत्रण है। उपयोगकर्ता नियंत्रण आकार केवल मूल विंडो आकार से बाधित है।WPF - एक आइटम नियंत्रण के चारों ओर सीमा

<UserControl> 
    <Grid> 
    <Border BorderBrush="DarkGray" BorderThickness="5"> 
     <ItemsControl ItemsSource="{Binding ActiveGame.Grid.CellsFlat}"> 
     <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate> 
      <Wpf:HexagonalPanel/> 
      </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
      <Button /> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
     </ItemsControl> 
    </Border> 
    </Grid> 
</UserControl> 

अब मैं सीमा के परिणामस्वरूप पैनल के आसपास ही तैयार होना चाहता हूं। लेकिन इसके बजाय यह पूरी ग्रिड के आसपास खींचा गया है या शायद ग्रिड के समान आकार में अधिक सटीक है।

मुझे लगता है कि मैंने अपने हेक्सागोनल पैनेल पर सही ढंग से MeasureOverride लागू किया है, यह सही आकार देता है, तो क्या यह उस आकार पर सीमा नहीं खींचना चाहिए?

मुझे क्या याद आ रही है?

धन्यवाद

उत्तर

5

आपने आइटम नियंत्रण पर आकार निर्धारित नहीं किया है, इसलिए यह इसके माता-पिता के आकार में भी होगा। आइटम्स कंट्रोल के क्षैतिज एलाइनमेंट और वर्टिकल एलाइनमेंट को केंद्र में सेट करने का प्रयास करें; जो आइटम्स कंट्रोल के वास्तविक आकार मैच को इसकी सामग्री के बारे में बताएगा।

+0

धन्यवाद यह काम किया मैं अभी भी सीखने के लिए है! डब्ल्यूपीएफ लेआउट सिस्टम के बारे में बहुत कुछ – eric

+0

मैं सुना है। इसमें कुछ उपयोग किया जाता है। –

2

ItemsControl ही BorderBrush और BorderThickness गुण है। आप शायद उन लोगों का उपयोग करना चाहते हैं क्योंकि आइटम्सकंट्रोल के पास इसके नियंत्रण टेम्पलेट में डिफ़ॉल्ट रूप से सीमा है।

+0

नहीं दुर्भाग्य से इसकी :-( – eric

+0

धन्यवाद एक ही परिणाम, वह मेरे लिए काम किया –

0

आप इस हासिल कर सकते हैं, की गणना और नए आकार मूल्य को अद्यतन करने:

public class MyPanel : Panel{ 
protected override Size ArrangeOverride(Size finalSize){ 

// calculate new size 
........ 

this.SetValue(WidthProperty, totalwidth); 
    this.SetValue(HeightProperty, totalheight); 

return new Size(totalwidth, totalheight); 
} 
} 
संबंधित मुद्दे