2014-12-05 4 views
0

У меня есть сетка с двумя рядами. В каждой строке есть ListView. В первой строке есть 100 предметов, а во втором ряду 500 штук. Это не поместится на экране, поэтому я хотел бы иметь полосы прокрутки, показанные в каждом ListView (без проблем), а высота строк должна быть в соотношении высот ListViews. Как 1 * и 5 *, но я не знаю заранее, насколько большими будут эти списки.Соотношение высоты строки сетки на основе содержимого

Примечание: каждый элемент может иметь различный размер, поэтому я хотел бы использовать фактическую высоту ListBox вместо пунктов подсчитывать

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition /> <!-- keep ratio of rows based on Listbox Heights --> 
     <RowDefinition /> 
    </Grid.RowDefinitions> 
    <ListBox Grid.Row="0"> 
     <!-- 100 items --> 
    </ListBox> 
    <ListBox Grid.Row="1"> 
     <!-- 500 items --> 
    </ListBox> 
</Grid> 

Есть идеи?

ответ

0
<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="{Binding Height,ElementName=ListBox1}"/> 
     <!-- keep ratio of rows based on Listbox Heights --> 
     <RowDefinition Height="{Binding Height,ElementName=ListBox2}"/> 
    </Grid.RowDefinitions> 
    <ListBox Grid.Row="0" x:Name="ListBox1"> 
     <!-- 100 items --> 
    </ListBox> 
    <ListBox Grid.Row="1" x:Name="ListBox2"> 
     <!-- 500 items --> 
    </ListBox> 
</Grid> 

Если у вас есть более сложные сценарии, вы можете использовать конвертер.

+0

Это не сработает. Это установит абсолютную высоту не *. Я использовал «StarConverter», но он не будет работать, потому что Height или ActualHeight of Lisbox - это то, что показано на экране, а не высота всех элементов в Listbox :( – kurin123

Смежные вопросы