C# WPF绑定列表是从datagrid更新的,但我没有';我不想要它
我是WPF/C的新手,绑定方面遇到了麻烦:( 我的主窗口中有一个从列表绑定的列表视图。C# WPF绑定列表是从datagrid更新的,但我没有';我不想要它,c#,wpf,xaml,data-binding,datagrid,C#,Wpf,Xaml,Data Binding,Datagrid,我是WPF/C的新手,绑定方面遇到了麻烦:( 我的主窗口中有一个从列表绑定的列表视图。 我有一个带有datagrid的第二个窗口,它绑定自另一个列表(第一个列表的副本) 我的问题是,当我从datagrid(第二个窗口)更新数据时,它也会从第一个窗口升级数据,但我不希望它。(我希望第一个列表独立于另一个) 以下是第一个窗口中的代码: public partial class MainWindow : Window { List<Voiture> mesBagnoles = ne
我有一个带有datagrid的第二个窗口,它绑定自另一个列表(第一个列表的副本) 我的问题是,当我从datagrid(第二个窗口)更新数据时,它也会从第一个窗口升级数据,但我不希望它。(我希望第一个列表独立于另一个) 以下是第一个窗口中的代码:
public partial class MainWindow : Window
{
List<Voiture> mesBagnoles = new List<Voiture>();
public MainWindow()
{
InitializeComponent();
...
lstViewBagnoles.ItemsSource = mesBagnoles;
...
}
}
第二窗口:
public partial class VoituresWindow : Window
{
public List<Voiture> listBagnoles = new List<Voiture>();
public VoituresWindow(List<Voiture> e)
{
listBagnoles = e;
InitializeComponent();
dataVoitures.ItemsSource = listBagnoles;
}
}
据此:
private void btnVoitures_Click(object sender, RoutedEventArgs e)
{
List<Voiture> mesBagnoles2 = new List<Voiture>(mesBagnoles);
VoituresWindow voitureWindow = new VoituresWindow(mesBagnoles2);
voitureWindow.ShowDialog();
}
private void btnvoices\u单击(对象发送方,路由目标)
{
列表mesBagnoles 2=新列表(mesBagnoles);
VoituresWindow voitureWindow=新VoituresWindow(mesBagnoles2);
voitureWindow.ShowDialog();
}
但第一个窗口列表视图始终由第二个窗口数据网格更新:/
我认为我的绑定有问题,正如sa_ddam213&Mike Schartz所说,您将相同的列表传递到第二个窗口,或者正如我所看到的,您需要此窗口的副本
只需初始化另一个列表并使用mesBagnoles的值影响它。这是同一个列表,您将对它的引用传递到了构造函数中的
VoituresWindow
,然后将相同的mesBagnoles传递到第二个窗口。初学者错误:)我只是从第一个列表创建了一个新列表,它工作得非常好。谢谢:)
public partial class VoituresWindow : Window
{
public List<Voiture> listBagnoles = new List<Voiture>();
public VoituresWindow(List<Voiture> e)
{
listBagnoles = e;
InitializeComponent();
dataVoitures.ItemsSource = listBagnoles;
}
}
<DataGrid x:Name="dataVoitures" Grid.Row="0" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTextColumn Header="Marque" Binding="{Binding Marque}" />
<DataGridTextColumn Header="Modèle" Binding="{Binding Modele}" />
<DataGridTextColumn Header="Moteur" Binding="{Binding Moteur}" />
...
</DataGrid.Columns>
</DataGrid>
private void btnVoitures_Click(object sender, RoutedEventArgs e)
{
VoituresWindow voitureWindow = new VoituresWindow(mesBagnoles);
voitureWindow.ShowDialog();
}
private void btnVoitures_Click(object sender, RoutedEventArgs e)
{
List<Voiture> mesBagnoles2 = new List<Voiture>(mesBagnoles);
VoituresWindow voitureWindow = new VoituresWindow(mesBagnoles2);
voitureWindow.ShowDialog();
}