Заставьте ProgressBar занять свободное место - PullRequest
1 голос
/ 08 мая 2011

Этот вопрос напрямую относится к (принятому ответу) этого вопроса: Изменить ListView CellTemplate на основе состояния элемента , который содержит все соответствующие XAML в принятом ответе.

Для одного из этих состояний требуется ProgressBar. Это работает, за исключением того факта, что я не могу заставить его выглядеть и действовать так, как я хочу, а именно: взять весь доступный горизонт и вертикальное пространство, не занимая больше места, чем требуется.

В попытке решить эту проблему, я попытался следовать рекомендациям, приведенным здесь , но, похоже, ничто из того, что я делаю, не дает единственного эффекта. Параметры XxxContentAlignment игнорируются, независимо от того, применяю ли я их к ContentControl s, ListViewItem s или к чему-либо еще, что я придумал по пути. Привязка к названному элементу также завершается неудачно, давая мне

Cannot find source for binding with reference

ошибка, связанная с невозможностью найти то, что другой ответ называет col1. Все другие предположения, которые я нашел, являются их вариациями: либо с участием ActualWidth или его ActualHeight двоюродного брата, либо с участием RelativeSource и FindAncestor.

На данный момент, пытаясь исправить это довольно тривиальное за последние 2 часа, я думаю, что могу действительно использовать последний толчок, чтобы показать мне правильное направление. (И, вероятно, укажите на очевидные ошибки, которые я совершал ...)

1 Ответ

1 голос
/ 08 мая 2011

Это на высоком уровне, я, например, растянул его, изменив ItemStyle:

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

Какой-то код, на котором я его тестировал, просто чтобы вы увидели, что HorizontalAlignment или HorizontalContentAlignment не установлено:

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...