2009-07-09 8 views
40

मेरे पास ListBox है ItemTemplate जिसमें TextBlock और ComboBox शामिल है। समस्या यह है कि TextBlock के अंदर पाठ की चौड़ाई प्रत्येक आइटम के लिए समान नहीं है और ComboBox नियंत्रण गठबंधन नहीं हैं।
मैं टेम्पलेट में TextBlock कैसे सेट कर सकता हूं ताकि सभी आइटम एक ही चौड़ाई हो, जो कि सबसे व्यापक है?मैं सभी वस्तुओं के लिए समान चौड़ाई WPF में किसी सूची बॉक्स में कॉलम कैसे बना सकता हूं?

<ListBox MinHeight="100" ItemsSource="{Binding Trainees}"> 
    <ListBox.ItemTemplate> 
    <DataTemplate> 
     <Grid Margin="1"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition /> 
      <ColumnDefinition /> 
     </Grid.ColumnDefinitions> 
     <TextBlock VerticalAlignment="Center" Grid.Column="0"> 
      <TextBlock.Text> 
      <MultiBinding StringFormat="{}{0}, {1}"> 
       <Binding Path="LastName" /> 
       <Binding Path="FirstName" /> 
      </MultiBinding> 
      </TextBlock.Text> 
     </TextBlock> 
     <ComboBox HorizontalAlignment="Left" Grid.Column="1" 
      ItemsSource="{Binding Source={StaticResource Functions}}" SelectedValue="{Binding Path=Function}" 
      MinWidth="100" /> 
     </Grid> 
    </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

उत्तर

63

आप IsSharedSizeScope जुड़ी संपत्ति का उपयोग कर सकते हैं:

यहाँ मेरी XAML है। अपने टेम्पलेट परिभाषा में, इस तरह, प्रत्येक स्तंभ के लिए एक "साझा आकार समूह" देते हैं:

<Grid.ColumnDefinitions> 
    <ColumnDefinition SharedSizeGroup="col1" /> 
    <ColumnDefinition SharedSizeGroup="col2" /> 
</Grid.ColumnDefinitions> 

... तो यह आकार के लिए प्रत्येक "आकार समूह" एक ही जानता है तो एक साझा आकार गुंजाइश के रूप में अपने ListBox को परिभाषित रास्ता:

<ListBox Grid.IsSharedSizeScope="True">...</ListBox> 
+0

बिल्कुल सही, धन्यवाद –

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