Steve15f Ответов: 1

C# WPF установите все флажки


Привет

В форме я генерирую несколько кнопок с привязкой.

В XML :

<Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="0.1*" />
            <RowDefinition Height="0.85*" />
            <RowDefinition Height="0.15*" />
        </Grid.RowDefinitions>
        <ItemsControl x:Name="lvDataBinding" HorizontalContentAlignment="Stretch" BorderThickness="0" Margin="10" Grid.Row="1" Background="{x:Null}" ItemsSource="{Binding}" Grid.ColumnSpan="4" Foreground="White">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Border BorderBrush="White" BorderThickness="1" CornerRadius="3" Margin="0,3" Grid.ColumnSpan="0" Background="Transparent" HorizontalAlignment="Left" VerticalAlignment="Top">
                        <StackPanel Orientation="Vertical" >
                            <CheckBox x:Name="cbxLignes" Tag="{Binding strCodeLigne}" Style="{StaticResource {x:Type ToggleButton}}" Content="{Binding strCodeLigne}" FontSize="22" Margin="25,15,25,15" Width="100" Height="45" IsChecked="{Binding IsChecked}" Checked="cbxLignes_Checked" Unchecked="cbxLignes_Unchecked" />
                        </StackPanel>
                    </Border>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel />
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
        </ItemsControl>
        <Button Name="btnValider" Grid.Row="4" Grid.Column="2" Content="Valider" Background="#5491fe" Margin="95,5,5,5"  Click="btnValider_Click" />
        <Button Name="btnTous" Grid.Row="4" Grid.Column="0" Content="Tous" Background="#5491fe" Margin="95,5,5,5" Click="btnTous_Click"  />
        <Button Name="btnAucuns" Grid.Row="4" Grid.Column="1" Content="Aucun" Background="#5491fe" Margin="5,5,95,5"  />
        <Button Name="btnAnnuler" Grid.Row="4" Grid.Column="3" Content="Annuler" Background="#5491fe" Margin="5,5,95,5" Click="btnAnnuler_Click"  />
    </Grid>


Моя привязка генерируется с помощью SQL-значений :

for (int i = 0; i < dvLignes.Count; i++)
            {
                clLignes = new CL_Lignes();

                //clLignes.strIDLigne = dvLignes[i]["IDLigne"].ToString().Trim();
                clLignes.strCodeLigne = dvLignes[i]["CodeLigne"].ToString().Trim();
                //clLignes.strDesLigne = dvLignes[i]["DesLigne"].ToString().Trim();

                lstLignes.Add(clLignes);

                this.DataContext = lstLignes;
            }


Мне нужно с помощью кнопки Проверить все флажки генерации. Я заранее не знаю, как и какие текстовые кнопки генерируются

Заранее спасибо.

Что я уже пробовал:

Я пытаюсь найти петлю, но не нахожу

1 Ответов

Рейтинг:
11

Pete O'Hanlon

Итак, у вас есть коллекция, которая содержит в качестве одного из своих свойств логическое значение IsChecked. Прежде всего, убедитесь, что IsChecked написан таким образом, что он вызывает событие PropertyChanged. Затем выполните цикл над вашей коллекцией и установите IsChecked = true, чтобы проверить их. Механизм привязки обнаружит запускаемое событие PropertyChanged и соответствующим образом обновит значение на экране.


Steve15f

Привет

Просто, как сделать это : затем зациклитесь на своей коллекции

У меня есть добавить этот код, когда я учусь для моих данных по моей другой теме

public partial class SelectionLigne : Window, INotifyPropertyChanged
{
#области Évenement Куай пермете де déclencher газета "l'événement" INotifyPropertyChanged в Эт почти à jour в Ле привязки
общественного недействительными комплект&ЛТ;tvalue&ГТ;(поле TValue Реф, TValue значение, [callermembername не используется] строку имя_свойства = "")
{
if (EqualityComparer< tvalue>.По умолчанию.Equals(поле, значение по умолчанию (TValue)) || !поле.Равна(значение))
{
поле = значение;

if (PropertyChanged != null)
события PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}

публичное мероприятие PropertyChangedEventHandler PropertyChanged;
#endregion

частный bool IsChecked;
public bool bChecked
{
get { return IsChecked; }
набор { Набор(арт этот флажок установлен, значение); }
}

Pete O'Hanlon

Где там содержится ваша ссылка на lstLignes? Это ваша коллекция, так как именно к ней вы привязаны. Все, что вам нужно сделать, это что-то вроде этого:
по каждому элементу (ВАР продукт в lstLignes)
{
пункт.Этот флажок установлен = истина;
}

Steve15f

Большое спасибо

Я начинаю понимать привязку!

Большое спасибо

Pete O'Hanlon

Пожалуйста