C# 双向绑定不起作用
我的窗口的XAML:C# 双向绑定不起作用,c#,.net,wpf,binding,C#,.net,Wpf,Binding,我的窗口的XAML: <ListView Grid.Row="0" Name="files"> <ListView.Resources> <DataTemplate x:Key="CheckboxTemplate"> <CheckBox IsChecked="{Binding Save, Mode=TwoWay}" /> </DataTemplat
<ListView Grid.Row="0" Name="files">
<ListView.Resources>
<DataTemplate x:Key="CheckboxTemplate">
<CheckBox IsChecked="{Binding Save, Mode=TwoWay}" />
</DataTemplate>
</ListView.Resources>
<ListView.View>
<GridView AllowsColumnReorder="False">
<GridViewColumn Header=" " Width="30" CellTemplate="{StaticResource CheckboxTemplate}" />
<GridViewColumn Header="Datei" DisplayMemberBinding="{Binding File}"/>
</GridView>
</ListView.View>
</ListView>
我叫窗户。窗口出现。我取消选中listview项目的复选框。我点击一个按钮。在它的事件处理程序中,我读取了listview的itemssource并。。。未选中项的Save属性(在其源中)仍然为true
我的错在哪里?如果我选中/取消选中复选框,为什么我的源代码不会得到更新?您还没有设置数据上下文。如果您都在同一个类中,请在窗口的构造函数中放入类似的内容
DataContext = this;
我认为您需要将DataContext设置为隐藏的代码,然后为清晰起见绑定到路径 XAML设置窗口数据上下文
DataContext="{Binding RelativeSource={RelativeSource Self}}"
尝试将IEnumerable转换为list。。 不建议使用IEnumerable作为项源,尤其是在使用Linq评估项源时
List<SaveItem> sil = sdl.Select(d => new SaveItem() { Save = true, Document = d }).ToList<SaveItem>();
files.ItemsSource = sil;
listsil=sdl.Select(d=>newsaveitem(){Save=true,Document=d}).ToList();
files.ItemsSource=sil;
PS-您可以使用名为“Snoop”的程序连接到正在运行的程序,并检查数据绑定错误。如果您这样做-您将在窗口上看到数据上下文,并且所有子元素可能都为空。在代码中,来自tsells的答案是正确的。对于我来说,如果要在XAML中设置路径,那么应该在XAML中设置DataContext。
DataContext="{Binding RelativeSource={RelativeSource Self}}"
List<SaveItem> sil = sdl.Select(d => new SaveItem() { Save = true, Document = d }).ToList<SaveItem>();
files.ItemsSource = sil;