在表格上,我有Listbox
个事件的受害者。 (我在警察局工作)。ListBox.ItemsSource
是受害者/人的ObservableCollection
。ListBox.ItemTemplate
是具有两行的网格。第1行将是受害者(姓名,种族,性别等)第2行有一个删除按钮,用于从列表中删除受害者,还有一个ComboBox
,其中有一个可能的关系描述符(父亲,母亲,女son等)列表,用于描述受害者之间的关系。和嫌疑犯。
在第2行XAML被注释掉的情况下,当用户输入事件编号时,该表单可以正常显示受害者列表。
第2行XAML未注释掉,试图显示受害者列表时,表格冻结。我怀疑ListBox
源和ComboBox
源之间存在某种绑定冲突。 ,但对XAML或ListBox.DataTemplate
中允许使用的内容知之甚少。
无论如何,下面是ListBox
XAML。我究竟做错了什么?
<ListBox Name="lstbxVictimToSuspect" ItemsSource="{Binding Form104CModel.Incident.Victims}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Name="VictimToSuspect" Height="Auto" MinHeight="100">
<Grid.RowDefinitions>
<RowDefinition></RowDefinition> <!-- Victims -->
<RowDefinition></RowDefinition> <!-- Relationship and Delete Button -->
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="75*"></ColumnDefinition>
<ColumnDefinition Width="25*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid Name="grdVictims" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2">
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25*"/>
<ColumnDefinition Width="110*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="70*"/>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="20*"/>
<ColumnDefinition Width="61*"/>
</Grid.ColumnDefinitions>
<StackPanel Name="stpnlVictimNumber" Grid.Row="0" Grid.Column="0">
<TextBlock> #</TextBlock>
<TextBox Name="VictimNumber" IsEnabled="True"
FontWeight="Bold"
Text="{Binding InvolvementNumber}"/>
</StackPanel>
<StackPanel Name="stkpnlVictimLastName" Grid.Row="0" Grid.Column="1">
<TextBlock HorizontalAlignment="Left">VICTIM LAST NAME</TextBlock>
<TextBox Name="VictimLastName" IsEnabled="True"
FontWeight="Bold" VerticalAlignment="Center"
Text="{Binding LastName}"/>
</StackPanel>
<StackPanel Name="stkpnlVictimFirstName" Grid.Row="0" Grid.Column="2" >
<TextBlock>FIRST</TextBlock>
<TextBox Name="VictimFirstName" IsEnabled="True"
FontWeight="Bold" VerticalAlignment="Center"
Text="{Binding FirstName}"/>
</StackPanel>
<StackPanel Name="stkpnlVictimMiddleName" Grid.Row="0" Grid.Column="3">
<TextBlock>MIDDLE</TextBlock>
<TextBox Name="VictimMiddleName" IsEnabled="True"
FontWeight="Bold" VerticalAlignment="Center"
Text="{Binding MiddleName}"/>
</StackPanel>
<StackPanel Name="stkpnlVictimSuffix" Grid.Row="0" Grid.Column="4">
<TextBlock>SUFFIX</TextBlock>
<TextBox Name="VictimSuffix" IsEnabled="True"
FontWeight="Bold" VerticalAlignment="Center"
Text="{Binding Suffix}"/>
</StackPanel>
<StackPanel Name="stkpnlVictimRace" Grid.Row="0" Grid.Column="5">
<TextBlock>RACE</TextBlock>
<TextBox Name="VictimRace" IsEnabled="True"
FontWeight="Bold" VerticalAlignment="Center"
Text="{Binding Race}"/>
</StackPanel>
<StackPanel Name="stkpnlVictimSex" Grid.Row="0" Grid.Column="6">
<TextBlock>SEX</TextBlock>
<TextBox Name="VictimGender" IsEnabled="True"
FontWeight="Bold" VerticalAlignment="Center"
Text="{Binding Gender}"/>
</StackPanel>
<StackPanel Name="stkpnlVictimDob" Grid.Row="0" Grid.Column="7">
<TextBlock>DOB</TextBlock>
<TextBox Name="VictimDOB" IsEnabled="True"
FontWeight="Bold" VerticalAlignment="Center"
Text="{Binding DOB}"/>
</StackPanel>
</Grid> <!-- Victims -->
<Grid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2">
<Grid Name="AddDeleteVictim">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Grid.ColumnSpan="2">
<TextBlock>RELATIONSHIP</TextBlock>
<ComboBox Name="Relationship" Height="40" FontWeight="Bold"
DisplayMemberPath="Description" SelectedValuePath="Code"
SelectedValue="{Binding Path=Form104CModel.SelectedRelationship, Mode=TwoWay}">
<ComboBox.ItemsSource>
<CompositeCollection>
<domain:Enumeration Code="" Description="" />
<CollectionContainer Collection="{Binding Source={x:Static infraData:CodeCache.VictimSuspectRelationship}}" />
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
</StackPanel>
<Button Grid.Column="3" Grid.ColumnSpan="1" BorderBrush="Black" FontSize="12" BorderThickness="1,1,1,1"
Content="Delete Victim" Background="LightGray" Name="btnDeleteVictim" Visibility=""
Command="{Binding Form104CModel.DeleteOtherVictimCommand}" Height="50"/>
</Grid>
</Grid> <!-- Relationship/Delete Victim Button -->
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
对于试图回答这个问题的任何人,我想我自己都想通了。我无法真正解释它,但我认为它可以归结为Listbox数据模板比所需的更为复杂。我怀疑一个人不应该将网格作为数据模板中的父对象。这是经过重新设计的: