我创建了两个用户控件,并计划将其绑定到列表视图中。在主窗口中,我有一个按钮,然后单击按钮,我正在重复添加第一个用户控件。为此,我创建了一个可观察的用户控件集合,并将其添加到列表视图中。当前,该部分运行良好(在每个按钮上单击的第一个用户控件都已正确添加到列表视图中)。现在我有这个要求,
由于描述有点令人困惑,我enter image description here添加了一张图像,该图像显示了如何将用户控件1多次绑定到列表视图的想法和代码部分。
public ObservableCollection<UserControl> lis = new ObservableCollection<UserControl>();
private void NextScreen_Click(object sender, RoutedEventArgs e)
{
UserCntrl1 usr = new UserCntrl1();
ListView.ItemsSource = lis;
lis.Add(usr);
}
首先将UserControls的集合添加到ItemsSource属性是错误的。
您应该改为在ListBoxItem的ControlTemplate中声明UserControls。通过DataTriggers在数据项类中的属性上在不同模板之间切换,例如下面的示例中的IsSelected
。单击“按钮”,在适当的项目上更改该属性。
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<local:UserControl1 .../>
</DataTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected}" Value="True">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<local:UserControl2 .../>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>