0
我有一個動態列表框,當selectAll按鈕被點擊時如何選擇列表框中的所有複選框。CheckAll複選框,當SelectAll單擊在c#
的XAML:
StackPanel Width="400" Orientation="Horizontal" Grid.Row="0">
<!--<CheckBox IsThreeState="True" x:Name="cbAllFeatures" Width="111" Content="Select all" Height="78"/>-->
<AppBarButton x:Name="Btn_SelectAll" Margin="20,0,0,0" Label="Select All" Icon="SelectAll" Click="Btn_SelectAll_Click" FontWeight="Bold" />
<AppBarButton x:Name="Btn_Delete" Margin="100,0,0,0" Label="Delete All" Icon="Delete" Click="DeleteAll_Click" FontWeight="Bold" />
</StackPanel>
<ListBox x:Name="listBoxobj" ItemsSource="{Binding}" Background="Transparent" Margin="6" Height="auto" BorderThickness="2" MaxHeight="580" Grid.Row="1" SelectionChanged="listBoxobj_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Width="330" Height="100" >
<Border Margin="5" BorderBrush="White" BorderThickness="1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="100" />
</Grid.ColumnDefinitions>
<CheckBox Name="Option1CheckBox" Grid.Row="0" Grid.Column="0" IsChecked="{Binding Checked,Mode=TwoWay}" VerticalAlignment="Center" Margin="5,0,0,0" />
<TextBlock x:Name="NameTxt" Grid.Row="0" Grid.Column="1" TextWrapping="Wrap" Text="{Binding Name}" VerticalAlignment="Center" HorizontalAlignment="Left" FontSize="22" Foreground="White"/>
<TextBlock x:Name="Age" Grid.Row="1" Grid.Column="1" TextWrapping="Wrap" VerticalAlignment="Center" HorizontalAlignment="Left" Foreground="White" FontSize="22" Text="{Binding Age}" />
<Button Grid.Row="0" Grid.Column="2" x:Name="deleteTaskButton" BorderThickness="0" Margin="0" Click="deleteTaskButton_Click" Height="18" IsEnabled="False">
<Image Source="/Assets/delete.png"/>
</Button>
</Grid>
</Border>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我試圖做這樣,但它似乎並沒有工作。
class SelectAll : INotifyPropertyChanged
{
public bool _Checked = false;
public bool Checked
{
get
{
return _Checked;
}
set
{
if (value != _Checked)
{
_Checked = value;
NotifyPropertyChanged("Checked");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
單擊select_all時的代碼。
public void Btn_SelectAll_Click(object sender, RoutedEventArgs e)
{
obj_check._Checked = true;
}
我的想法是使用for-loop。它必須檢查每個項目。但我不知道如何檢查,因爲我不能選擇複選框。任何幫助表示讚賞。
我收到錯誤「窗口是一種類型,在給定上下文中無效」 – Rachel
@Rachel您需要將窗口更改爲窗口的名稱 – pekira
否否工作... – Rachel