使ProgressBar占用可用空间

时间:2011-05-08 17:58:41

标签: c# wpf xaml listview binding

这个问题直接与(接受的答案)这个问题有关:Change ListView CellTemplate based on state of item,其中包含所接受答案中的所有相关XAML。

其中一个州需要ProgressBar。哪个有效,除了我不能让它看起来和按照我想要的方式行事,这是为了占用所有可用的地平线和垂直空间而不占用比所需更多的空间。

为了解决这个问题,我试图遵循here给出的建议,但我所做的一切似乎都没有效果。 XxxContentAlignment选项将被忽略,无论我是否将它们应用于ContentControlListViewItem或其他我在此过程中提出的其他内容。对指定元素的绑定也失败了,给了我一个

Cannot find source for binding with reference

错误,指的是无法找到其他答案调用col1的内容。我发现的所有其他建议都是这些建议的变体,涉及ActualWidth或其ActualHeight堂兄,或涉及RelativeSourceFindAncestor的内容。

在这一点上,在过去的两个小时内试图解决这个相当微不足道的事情,我想我真的可以用最后的推动来向我展示正确的方向。 (并且可能指出我一直在犯的明显错误......)

1 个答案:

答案 0 :(得分:1)

这是一个很高的水平,我通过改变ItemStyle来伸展它:

<ListView.ItemContainerStyle>
    <Style TargetType="{x:Type ListViewItem}">
        <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
    </Style>
</ListView.ItemContainerStyle>

我测试了一些代码,只是因为您看到没有设置HorizontalAlignmentHorizontalContentAlignment

<GridViewColumn Header="Status">
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <ContentControl>
                <ContentControl.Style>
                    <Style TargetType="{x:Type ContentControl}">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding IsActive}" Value="True">
                                <Setter Property="ContentTemplate">
                                    <Setter.Value>
                                        <DataTemplate>
                                            <StackPanel>
                                                <ProgressBar Height="20"
                                                             Value="{Binding Id}" Minimum="0" Maximum="10"/>
                                            </StackPanel>
                                        </DataTemplate>
                                    </Setter.Value>
                                </Setter>
                            </DataTrigger>

                            <!-- ... -->
                        </Style.Triggers>
                    </Style>
                </ContentControl.Style>
            </ContentControl>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>