我有一个列表框,其中我添加了两个控件,即一个复选框和一个datagrid并排作为listboxitem。我是以下列方式完成的:
代码背后:
listBox1.items.Add(DT)
这里dt是表名。
在Xaml中:
<ListBox Grid.Row="0" AlternationCount="2" MinHeight="305" HorizontalAlignment="Stretch" Name="listBox1" VerticalAlignment="Stretch" MinWidth="537" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Name="stkPanel" MinHeight="80" MinWidth="500" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="40"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<DataGrid Grid.Column="1"
AutoGenerateColumns="True"
MinHeight="75"
HorizontalAlignment="Center"
Name="dataGrid1"
VerticalAlignment="Stretch"
MinWidth="470"
MaxWidth="900"
ItemsSource="{Binding}"
IsReadOnly="True" Background="#E6BAB7B7">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<CheckBox Name="colCheckBox" Content="{Binding}"/>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.ColumnHeaderStyle>
</DataGrid>
<CheckBox Grid.Column="0" Height="35" Width="25" Name="IsDone" HorizontalAlignment="Right" VerticalAlignment="Center" Checked="IsDone_Checked" />
</Grid>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
现在,当我选中“IsDone”复选框,即listboxitem的一部分时,应检查数据网格(也是列表框项目)列标题中存在的所有复选框,以查找该特定列表框项目行。如果未选中datagrid列标题中的任何复选框,则同时也应取消选中“Isdone”复选框。您能建议我如何操作吗?
提前致谢
答案 0 :(得分:0)
按Element Binding
,这将解决问题..
<DataTemplate>
<StackPanel Name="stkPanel" MinHeight="80" MinWidth="500" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="40"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<DataGrid Grid.Column="1"
AutoGenerateColumns="True"
MinHeight="75"
HorizontalAlignment="Center"
Name="dataGrid1"
VerticalAlignment="Stretch"
MinWidth="470"
MaxWidth="900"
ItemsSource="{Binding}"
IsReadOnly="True" Background="#E6BAB7B7">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<CheckBox Name="colCheckBox" IsChecked="{Binding IsChecked, ElementName=IsDone, Mode=OneWay}" Content="{Binding}"/>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.ColumnHeaderStyle>
</DataGrid>
<CheckBox Grid.Column="0" Height="35" Width="25" x:Name="IsDone" HorizontalAlignment="Right" VerticalAlignment="Center" Checked="IsDone_Checked" />
</Grid>
</StackPanel>
</DataTemplate>