2013-06-18 33 views
6

Tôi muốn có cột hộp kiểm trong DataGrid của tôi được kích hoạt/vô hiệu hóa cho mỗi hàng tùy thuộc vào một giá trị trong một bộ sưu tập. Tôi có một ObservableCollection được gọi là AccountComponents, đó là một tập hợp của một lớp được gọi là AccountComponent có một thuộc tính boolean được gọi là Enabled. Tôi đã thử ràng buộc các tài sản được kích hoạt để IsReadOnly và IsEnabled không có may mắn.DataGridCheckBoxColumn IsReadOnly thuộc tính ràng buộc

Dưới đây là XAML nơi tôi đã thử một DataGridCheckBoxColumn-

<DataGridCheckBoxColumn Binding="{Binding IsChecked}" IsReadOnly="{Binding AccountComponents/Enabled}"/> 

Dưới đây là XAML nơi tôi đã thử một DataGridTemplateColumn-

<DataGridTemplateColumn Header=""> 
        <DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <Grid> 
           <CheckBox IsChecked="{Binding IsChecked,Mode=TwoWay}" IsEnabled="False"/> 
          </Grid> 
         </DataTemplate> 
        </DataGridTemplateColumn.CellTemplate> 
        <DataGridTemplateColumn.CellEditingTemplate> 
         <DataTemplate> 
          <Grid> 
           <CheckBox IsChecked="{Binding IsChecked,Mode=TwoWay}" IsEnabled="{Binding Enabled}"/> 
          </Grid> 
         </DataTemplate> 
        </DataGridTemplateColumn.CellEditingTemplate> 
       </DataGridTemplateColumn> 

Bất kỳ sự giúp đỡ figuring this out được nhiều đánh giá cao.

+0

Bạn nhận được thông báo nào từ cửa sổ Đầu ra? –

+0

Cũng tương tự đối với bất kỳ thuộc tính * * nào trên * bất kỳ loại * cột nào. Tóm tắt vấn đề của bạn, tìm kiếm, tìm giải pháp. –

Trả lời

5

Trước tiên, không cần phải chỉ định CellEditingTemplate khi chỉ sử dụng Hộp kiểm. Hộp kiểm của chính họ là "có thể chỉnh sửa/có thể kiểm tra". Vì vậy, loại bỏ rằng CellEditingTemplate vì điều này không có ý nghĩa.

Bạn đã cố gắng liên kết thuộc tính IsEnabled của Hộp kiểm trực tiếp với thuộc tính Enabled của bạn AccountComponent trong CellTemplate (giống như bạn đã thực hiện trong CellEditingTemplate)? Điều này sẽ giải quyết vấn đề của bạn.

<DataGridTemplateColumn.CellTemplate> 
    <DataTemplate> 
     <Grid> 
      <CheckBox IsChecked="{Binding IsChecked,Mode=TwoWay}" 
         IsEnabled="{Binding Enabled}"/> 
     </Grid> 
    </DataTemplate> 
</DataGridTemplateColumn.CellTemplate> 
+1

Cảm ơn Markus đã làm việc. Bạn có thể cho tôi biết tại sao ràng buộc với thuộc tính IsReadOnly trên DataGridCheckBoxColumn sẽ không hoạt động? –

+0

Tôi chưa thử nghiệm, nhưng Binding-Expression của bạn với 'AccountComponents/Enabled' có vẻ đáng ngờ. Điều này thường được sử dụng cho các kịch bản chính/chi tiết trong trường hợp đó bạn đã có chi tiết của mình. Nỗ lực đầu tiên của tôi sẽ là IsReadOnly = "{Binding Enabled}" – Markus

+0

Tôi nghĩ nó có vẻ kỳ lạ nhưng đó là cú pháp VS được tạo khi tôi chọn Đã bật từ cửa sổ bật lên dữ liệu. Tôi đã thử suggesstion của bạn nhưng nó không hoạt động. Tôi đoán tôi sẽ gắn bó với datatemplatecolumn. Cảm ơn bạn đã giúp đỡ. –

Các vấn đề liên quan