gpt4 book ai didi

wpf - 从 View 模型中选择数据网格行中的所有复选框

转载 作者:行者123 更新时间:2023-12-04 21:49:52 25 4
gpt4 key购买 nike

我在 WPF 应用程序中使用 Caliburn Micro 作为 MVVM 框架。我几乎没有问题如何选择数据网格控件中的所有复选框。每个数据网格行都有复选框。

我绑定(bind)了 List 的 datagrid 属性类型。

模型:

public class Bill : INotifyPropertyChanged
{

public string CellPhoneNo
{
get { return _cellPhoneNo; }
set
{
_cellPhoneNo = value;
NotifyPropertyChanged("CellPhoneNo");
}
}

public bool IsSelected
{
get { return _isSelected; }
set
{
_isSelected = value;
NotifyPropertyChanged("IsSelected");
}
}

View 模型:
    public IList<Bill> TmobileBill
{
get
{
return _tmobileBill;
}
set
{
_tmobileBill = value;
NotifyOfPropertyChange(()=>TmobileBill);
}
}

看法:
    <Controls:DataGrid  ItemsSource="{Binding Path= TmobileBill, 
Mode=OneWay,
UpdateSourceTrigger=PropertyChanged}"
Style="{StaticResource FinalBillsView_CallsDataGrid}"
Grid.Row="0"
CanUserResizeRows="False">

<Controls:DataGrid.RowHeaderTemplate>
<DataTemplate>
<Grid>
<CheckBox IsChecked="{Binding Path=IsSelected, Mode=TwoWay,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type Controls:DataGridRow}}}"/>
</Grid>
</DataTemplate>
</Controls:DataGrid.RowHeaderTemplate>

<Controls:DataGrid.Columns>

<Controls:DataGridTextColumn IsReadOnly="True"
CellStyle="{StaticResource FinalBillsView_DataGrid_CellStyle}"
Binding="{Binding Path=CellPhoneNo}"
HeaderStyle="{StaticResource FinalBillsView_DataGridColHeaderStyle}"
Header="Cell phone No"/>
</Controls:DataGrid.Columns>
</Controls:DataGrid>

在 datragrid 行的数据模板中,我绑定(bind)了来自 Bill 类的复选框的属性 IsChecked 属性 IsSelected。
<Controls:DataGrid.RowHeaderTemplate>
<DataTemplate>
<Grid>
<CheckBox IsChecked="{Binding Path=IsSelected, Mode=TwoWay,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type Controls:DataGridRow}}}"/>
</Grid>
</DataTemplate>
</Controls:DataGrid.RowHeaderTemplate>

问题是如果我为列表中的所有项目设置属性 IsSelected 为 true。
            foreach (var row in TmobileBill)
{
row.IsSelected = true;
}

View 中的复选框未选中。问题的根源是什么?

谢谢你。

最佳答案

  • 尝试改变IList<Bill>ObservableCollection<Bill>
  • 尝试使用简单绑定(bind)<CheckBox IsChecked="{Binding Path=IsSelected, Mode=TwoWay}"/>

  • 出于调试目的,与 CheckBox 一起定义下一个控件以查看实际绑定(bind)到 RowItem 的内容:
    <TextBlock Text="{Binding}"></TextBlock>

    关于wpf - 从 View 模型中选择数据网格行中的所有复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6913662/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com