在构成列表框项目的两个控件之间均匀分割宽度?

时间:2009-07-23 13:00:28

标签: c# wpf listbox datatemplate listboxitem

我正在尝试设置一个ListBox,以便每个项目都有一个文本块和一个组合框,在列表框的宽度上均匀分割,但我似乎无法找到ColumnDefinition属性的神奇组合来完成它。这是我的列表框项的DataTemplate。无论如何,我已经把它清理干净了。

        <DataTemplate x:Key="MyDataTemplate">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition/>
                    <ColumnDefinition/>
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Column="0" Text="{Binding XPath=text()}"/>
                <ComboBox Grid.Column="1" SelectedIndex="0" ItemsSource="{Binding Source={StaticResource Names}, XPath=Name}"></ComboBox>
            </Grid>
        </DataTemplate>

我在窗口上测试了一个带网格的简单应用程序。简单地指定两个ColumnDefinitions会使它们自动占据宽度的一半,这很好,但是当在listboxitem datatemplate中执行相同操作时,行为是不同的。

如何更改datatemplate以使其正常工作?

谢谢!

1 个答案:

答案 0 :(得分:7)

ListBox的默认HorizontalContentAlignment为Left。您需要将其设置为Stretch,以便ListBoxItems占据整个宽度。

以下是关于ListBox / ListBoxItem样式和模板的更多信息:http://msdn.microsoft.com/en-us/library/cc278062(VS.95).aspx