Заголовок столбца флажка wpf datagrid де / выбирает все - PullRequest
0 голосов
/ 23 июня 2011

Я пытаюсь создать сетку данных со столбцом флажка, который имеет заголовок с флажком, который выбирает и снимает флажки строк. Также я пытаюсь сделать это без кода. До сих пор я был частично успешен в том, что использовал тег datagrid в качестве посредника в привязке и мог отменить выбор флажков строк из флажка заголовка, используя триггеры данных, но как только я проверю строку, привязка в этой строке 'умирает', и заголовок больше не влияет на него. Кроме того, я уже пробовал это с односторонним связыванием вместо триггеров данных и получил тот же результат ... Кто-нибудь знает способ сохранить привязку живым или pheraps другой, чтобы добиться эффекта, который я ищу только inxaml.

Заголовок:

<CheckBox IsChecked="{binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}, Mode=FindAncestor}, Path=Tag}"/>

шаблон колонки:

<CheckBox>
    <CheckBox.Style>
        <Style TargetType="{x:Type CheckBox}">
            <Style.Triggers>
                <DataTrigger Binding="{binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}, Mode=FindAncestor}, Path=Tag}" Value="True">
                    <Setter Property="IsChecked" Value="True"/>
                </DataTrigger>
                <DataTrigger Binding="{binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}, Mode=FindAncestor}, Path=Tag}" Value="False">
                    <Setter Property="IsChecked" Value="False"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </CheckBox.Style>
</CheckBox>

1 Ответ

0 голосов
/ 23 июня 2011

Это действительно очень хорошая идея, чтобы решить эту проблему. Я не понимаю, почему это не должно работать.

Тем не менее, есть несколько вещей, которые нужно попробовать:

Поместите свой флажок заголовка и флажок строки в окно обычно (не внутри DataGrid), чтобы увидеть, какой эффект это имеет.

Другим вариантом является попытка присвоить имя флажку «Заголовок» (например, <CheckBox Name="cbxHeader"), а затем связать его с {Binding ElementName=cbxHeader Path=Tag}.

Кроме того, проверьте окно «Вывод» в Visual Studio во время тестирования (во время его выполнения отладка> Windows> Вывод; оно может быть пустым, но просто прокрутиться вверх) на наличие сообщений о том, почему привязки не выполняются.

Вы также можете использовать фальшивку ValueConverter, чтобы попытаться проверить, стреляют ли привязки.

...