0

xml代码:

<DataTemplate x:Key="GridCheckBox">
    <StackPanel Orientation="Horizontal">
        <CheckBox IsChecked="{Binding stat, UpdateSourceTrigger=PropertyChanged}" Checked="CheckBox_Checked" Unchecked="UnCheckBox_Checked" HorizontalAlignment="Center" />
    </StackPanel>
</DataTemplate>

<xcdg:DataGridControl x:Name="_dataGrid" AllowDrag="False">
    <xcdg:DataGridControl.View>
        <xcdg:TableflowView FixedColumnCount="1" />
    </xcdg:DataGridControl.View>

    <xcdg:DataGridControl.Columns>
        <xcdg:Column FieldName="." Title="Select" Width="50" IsMainColumn="True"
                     CellContentTemplate="{StaticResource GridCheckBox}"            
                     GroupValueTemplate="{StaticResource GridCheckBox}"/>
    </xcdg:DataGridControl.Columns>
</xcdg:DataGridControl>

将数据填充到 xceed datagrid

 DataGridCollectionView collectionView = new DataGridCollectionView(dt.DefaultView);
          collectionView.GroupDescriptions.Add(new DataGridGroupDescription("filter"));
          _dataGrid.ItemsSource = collectionView;

所有其他细节都很好,但不是复选框;谁能帮我解决。

4

2 回答 2

1

在对上一个答案的评论中,您说如果 stat=1 复选框应该被勾选。如果stat不是布尔值,则必须使用 Converter 才能绑定到IsChecked属性。

转换器应该很简单:

  public class StatConverter : IValueConverter
  {
    #region IValueConverter Members

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
      if (value is int)
      {
        return (int)value == 1;
      }

      return false;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
      throw new NotImplementedException();
    }

    #endregion
  }
于 2015-10-12T12:07:06.233 回答
0

在您的 IsChecked-Binding 中,尝试向RelativeSource您的Window/提供UserConroltDataContext 所在的位置。

IsChecked-Property 的绑定看起来类似于:

IsChecked="{Binding DataContext.stat, UpdateSourceTrigger=PropertyChanged, RelativeSource={RelativeSource FindAncestor, AncestorType=Window}"
于 2015-10-12T11:32:59.200 回答