我有一个ListBox
,它的模板中有一个网格以允许4列。一列是ListBox
的实际文本。我想要该列填充可用的水平空间。WPF布局 - 获得一列以填充可用空间
列定义是:
<ControlTemplate TargetType="ListBoxItem">
<Grid ScrollViewer.CanContentScroll="True" Margin="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20" />
<ColumnDefinition Width="50" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="30" />
</Grid.ColumnDefinitions>
<CheckBox VerticalAlignment="Center" Grid.Column="0" IsChecked="{Binding IsSelected,
RelativeSource={RelativeSource TemplatedParent},
Mode=TwoWay}" />
<TextBlock VerticalAlignment="Center" Grid.Column="1" Margin="5,0,5,0" Text="{Binding Id}" />
<TextBlock VerticalAlignment="Center" Grid.Column="2" Margin="5,0,5,0" Text="{Binding Title}" />
<Button HorizontalAlignment="Right" Grid.Column="3" Tag="{Binding Id}" Margin="5,0,5,0">-></Button>
</Grid>
</ControlTemplate>
我已经试过这几个排列并没有什么会让它在窗口解决,除了明确的大小设置。然后,当我调整窗口大小时,它不会调整大小。
的ListBox
被包裹在一个ScrollViewer
允许垂直滚动(我猜那是什么是搞乱了我。)
如何获得第三列,以填补刚刚可用的空间和任何想法没有更多?
该修复与“声明性”无关。 Xaml是声明式的。您的问题是流量问题,因为您的解决方案显示您禁用了控件的水平流动行为。 – 2009-12-10 03:18:30
不太清楚你的意思。你是否说我的修复方法是错误的?我正在使用声明式XAML属性来获取我需要的解决方案。无论哪种方式,没有其他方式来做到这一点。 – Vaccano 2009-12-10 15:27:28