У меня есть список с пользовательским контролем, установленным в качестве элемента списка.в этом списке у меня есть несколько сеток и две кнопки.
<Grid x:Name="LayoutRoot" HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="120" />
<RowDefinition x:Name="personDetailHolder" Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="92.915" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<StackPanel Grid.RowSpan="2"
Grid.ColumnSpan="2"
Margin="0,0,-0.042,0"
Orientation="Vertical"
d:LayoutOverrides="Height">
<Grid Height="117" Margin="3,0,0,0">
<Grid.RowDefinitions>
<RowDefinition Height="117" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Rectangle />
<!-- removed for brevity -->
<Button x:Name="btnViewDetails"
Width="106"
Height="24"
Margin="0,0,3,6"
HorizontalAlignment="Right"
VerticalAlignment="Bottom"
Click="btnDetails_Click"
Foreground="#FFFBCE2F"
Style="{StaticResource ViewDetailsButton}" />
<!-- Detail section -->
<Grid x:Name="personDetail"
Grid.Row="1"
MinHeight="365"
Margin="0,0,5,-376"
VerticalAlignment="Bottom"
RenderTransformOrigin="0.5,0.5"
Visibility="Collapsed">
<Rectangle />
<!-- removed for brevity -->
<Button x:Name="btnCloseDetails"
Width="123"
Height="24"
Margin="0,8,8,0"
HorizontalAlignment="Right"
VerticalAlignment="Top"
Click="btnDetails_Click"
Foreground="#FFFBC42F"
Style="{StaticResource CloseDetailsButton}" />
</Grid>
</Grid>
</StackPanel>
</Grid>
Событие click btnDetails_Click вызывает событие в коде пользовательского элемента управления
private void btnDetails_Click(object sender, System.Windows.RoutedEventArgs e)
{
UIPanelControl cp = new UIPanelControl();
cp.CheckDetailPanelStatus(this.personDetail, this.personDetailHolder, this.btnViewDetails, this.btnCloseDetails, this.detailAnimation);
}
, которое вызывает метод
public void CheckDetailPanelStatus(Grid panelName, RowDefinition rowName, Button openButtonName, Button closeButtonName, Storyboard animi)
{
if (panelName.Visibility == System.Windows.Visibility.Visible)
{
panelName.Visibility = System.Windows.Visibility.Collapsed;
rowName.Height = new GridLength(0);
openButtonName.Visibility = System.Windows.Visibility.Visible;
closeButtonName.Visibility = System.Windows.Visibility.Collapsed;
}
else
{
panelName.Visibility = System.Windows.Visibility.Visible;
rowName.Height = new GridLength(380);
openButtonName.Visibility = System.Windows.Visibility.Collapsed;
closeButtonName.Visibility = System.Windows.Visibility.Visible;
animi.Begin();
}
}
Цель здесьвернуть пользователю список результатов.Затем пользователь может нажать на кнопку «Просмотр дополнительных сведений», чтобы развернуть второй раздел, в котором отображаются дополнительные сведения о выбранной записи.Я использую подход MVVM, поэтому команда отправляется на виртуальную машину для облегчения заполнения второй записи.Поскольку анимации, видимость и т. Д. Содержались в представлении, я решил оставить эти события в коде представления.
Это решение частично работает в том, что, когда я нажимаю на кнопку, раздел расширяется для выбранного элемента списка.Однако, если прокрутить вниз до других результатов, я обнаружу, что другие элементы списка периодически раскрываются.Для этого нет повторяющегося шаблона (то есть для каждого 5-го элемента или любой другой записи). Я также видел случаи, когда, если я выбираю первую запись и расширяю ее, прокручиваю вниз до следующей записи и возвращаюсь назад, первая запись сбрасывается обратно.к рухнул.
Я в тупик относительно того, что может быть причиной этой проблемы.
Может ли кто-нибудь объяснить, почему я это вижу или как это предотвратить?