我有一個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