ВВЕДЕНИЕ:
Мой код очень похож на тот, который обсуждался в этом вопросе . У меня есть столбец CheckBox
в ListView
(который использует GridView
в качестве View
), и я пытаюсь выровнять CheckBox
по центру внутри столбца.
Ответ предлагает добавить ItemContainerStyle
, который устанавливает HorizontalContentAlignment
в Center
. Я пробовал это, и это не применяет стиль.
КОД:
Вот мой код:
<ControlTemplate x:Key="NoRedemptions">
<Border BorderBrush="#FF7F9DB9" HorizontalAlignment="Stretch" BorderThickness="1" Background="White">
<TextBlock Text="No Redemptions have been added" HorizontalAlignment="Center"></TextBlock>
</Border>
</ControlTemplate>
<Style x:Key="CellAlignmentStyle" TargetType="{x:Type ListViewItem}">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
<Style TargetType="ListView" x:Key="ListViewTriggersStyle">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=FundRedemptions.Count, UpdateSourceTrigger=PropertyChanged}" Value="0">
<Setter Property="ItemsSource" Value="{x:Null}"></Setter>
<Setter Property="View" Value="{x:Null}"></Setter>
<Setter Property="Template" Value="{StaticResource NoRedemptions}"/>
</DataTrigger>
</Style.Triggers>
</Style>
Первый элемент, ControlTemplate
, называемый NoRedemptions , используется, когда ListView
пусто. Он по существу удаляет столбцы GridView
и просто оставляет TextBox
с рамкой, сообщающей пользователю, что ListView
пуст.
Второй элемент, Style
, называется CellAlignmentStyle - это стиль, скопированный по ссылке выше. Предполагается, что по центру столбца CheckBox
.
Последний элемент, Style
, называется ListViewTriggerStyle - это стиль, применяемый к ListView
, который в основном удаляет привязки к нему (ItemsSource
и View
) и устанавливает ListView
Template
в NoRedemptions * ControlTemplate
(первая точка маркера), отображая сообщение о том, что ListView
пусто, когда ItemsSource
из ListView
( FundRedemptions ) пусто.
Вот GridView
, который связан как ListView
View
(для простоты я опустил нерелевантные столбцы):
<GridView AllowsColumnReorder="False" x:Key="ListViewView">
<GridViewColumn x:Name="checkedColumn" Header="Checked" Width="Auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Path=Checked, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"></CheckBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
А вот и сам оскорбительный ListView:
<ListView
Grid.Row="3"
Style="{StaticResource ListViewTriggersStyle}"
ItemContainerStyle="{StaticResource CellAlignmentStyle}"
Grid.ColumnSpan="5"
View="{StaticResource ListViewView}"
ItemsSource="{Binding Path=FundRedemptions, UpdateSourceTrigger=PropertyChanged}">
</ListView>
ПОПЫТКИ ПРИ РЕШЕНИИ ВЫПУСКА
Теперь, как уже упоминалось выше, Style
, описанный в пуле 2, "заимствованный" из вышеуказанной ссылки, не работает на моем ListView
.
- Я пытался использовать
HorizontalAlignment
вместо HorizontalContentAlignment
, и не работал.
- Я пытался добавить другие сеттеры к стилю, чтобы посмотреть, применяется ли он и эти сеттеры сделал работает
- Я попытался изменить
VerticalAlignment
, чтобы проверить, не является ли проблема с выравниванием и что сработало .
- Я пытался изменить значение с
Stretch
, как предлагает пост SO, на Center
или Right
, и что не не сработало.
- Я пытался внести изменения в выравнивания самого
CheckBox
и что не работал
- Я пытался добавить выравнивание к GridView или к самому стилю
ListView
, и этот не работал.
- Я попытался вставить точную копию
ListView
в ответе SO, и эта копия сделал работает
- Я попытался удалить привязки
Style
и ItemsSource
, а затем просто добавить <ListViewItem>Item1</ListViewItem>
в тело ListView
(чтобы посмотреть, имеет ли это отношение к ItemsSource
или Style
и не работает.
- Я попытался стилизовать
CheckBox
в соответствии с точным набором стилей в примере, и что не сработало.
В заключение
Что меня больше всего беспокоит, так это то, что на самом деле он ничем не отличается от примера в посте, но по какой-то причине он не работает. Я не могу придумать, что еще попробовать.
u_u
EDIT
Хорошо, поэтому я закончил реконструкцию своей сетки из той, которая была размещена здесь , постепенно добавляя больше моих стилей и триггеров к GridView
.
Я ничего не нашел.
Я так расстроен, что это может быть? Порядок Style
s и Template
s в UserControl.Resources
изменен, могло ли это иметь значение, не вызывая явной ошибки?
На данный момент я слишком боюсь разбить его, чтобы поиграть со стилями и разобраться.
u_u