WPF绑定复选框已选中到ItemsSource DataModel无法查看模型
我有一个使用MVVM的WPF表单。在该WPF窗口中,我有一个对我的WPF绑定复选框已选中到ItemsSource DataModel无法查看模型,wpf,checkbox,datatemplate,Wpf,Checkbox,Datatemplate,我有一个使用MVVM的WPF表单。在该WPF窗口中,我有一个对我的DataContext的引用: DataContext="{x:Static modelView:MasterAutoSyncModelView.Instance}" 此主自动同步模式视图包含一个可观察集合: public ObservableCollection<AutoSyncJob> Jobs { get; set; } 对于其IsActive属性设置为true的作业,列表应选中复选框 <ListVie
DataContext
的引用:
DataContext="{x:Static modelView:MasterAutoSyncModelView.Instance}"
此主自动同步模式视图
包含一个可观察集合
:
public ObservableCollection<AutoSyncJob> Jobs { get; set; }
对于其IsActive
属性设置为true的作业,列表应选中复选框
<ListView x:Name="lvJobs"
HorizontalAlignment="Left" VerticalAlignment="Top"
Height="628" Width="205"
Margin="30,62,0,0"
ItemsSource="{Binding Jobs}"
SelectedItem="{Binding SelectedJob, Mode=TwoWay}">
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Header="Active" Width="50">
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsActive, Mode=TwoWay}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding JobName}" Header="Job Name" Width="150">
</GridViewColumn>
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
删除此投诉,但窗口在加载时仍没有选中的复选框
如何将IsChecked
属性绑定到从Jobs ItemsSource绑定到该行的AutoSyncJob上的IsActive
布尔值,以便根据基础模型显示为选中或未选中
第二个问题:选中或取消选中ListView中的活动框不会触发模型setter中的代码,即使我将模式设置为双向。因此,如果我取消选中或选中该框,我希望模型的
IsActive
属性会被修改。。。但是没有交流。我怀疑这是因为DataTemplate并没有真正绑定到模型项。我已经尝试了您的代码,它对我有效。检查您的DataContex设置是否正确。
我认为您还没有DataContext,或者稍后(在检查绑定之前)将设置它。。
对不起我的英语;) 这可能是编译器的问题。别管它一会儿,回来后问题就自行解决了。上面发布了相同的代码(根本没有任何更改),它只是决定了自己的行为
很抱歉浪费了时间。在这里也可以使用。datacontext对所有东西都很有用,除了复选框本身。如果代码对你有用,你介意发布代码吗?我想看看有什么不同。我所有的同事都远离我的机器,害怕它下一步会做什么。(多个同事看到它忽略了标志并将其保留为空)它现在可以正常工作,没有代码更改。也许。。。这是一个构建?我不确定。也许是用圣水驱魔机器。
<ListView x:Name="lvJobs"
HorizontalAlignment="Left" VerticalAlignment="Top"
Height="628" Width="205"
Margin="30,62,0,0"
ItemsSource="{Binding Jobs}"
SelectedItem="{Binding SelectedJob, Mode=TwoWay}">
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Header="Active" Width="50">
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsActive, Mode=TwoWay}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding JobName}" Header="Job Name" Width="150">
</GridViewColumn>
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
<CheckBox IsChecked="{Binding Jobs/IsActive, Mode=TwoWay}"/>