2013-06-18 32 views
6

コレクション内の値に応じて、各行のデータグリッドにチェックボックス列を有効または無効にしたいとします。私はAccountComponentというObservableCollectionを持っています。これはAccountComponentというクラスのコレクションで、Enabledというブール値のプロパティを持っています。 EnabledプロパティをIsReadOnlyに、そしてIsEnabledを幸運にバインドしようとしました。ここでDataGridCheckBoxColumn IsReadOnlyプロパティバインディング

は、ここで私はこれを考え出すすべてのヘルプははるかに高く評価され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> 

を試してみましたXAMLだ私はDataGridCheckBoxColumn-

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

を試してみましたXAMLです。

+0

[出力]ウィンドウからどのようなメッセージが表示されますか? –

+0

これは、* any *型の列の* any *プロパティでも同じです。あなたの問題を抽象化し、検索し、解決策を見つけます。 –

答えて

5

まず、チェックボックスを使用するときにCellEditingTemplateを指定する必要はありません。チェックボックス自体は「編集可能/チェック可能」です。したがって、これは意味をなさないので、CellEditingTemplateを削除してください。

は(あなたがCellEditingTemplateでそれをやったように)あなたがCellTemplateに直接AccountComponentのごEnabledプロパティにあるチェックボックスのIsEnabledプロパティをバインドしようとしたことがありますか?これはあなたの問題を解決するはずです。

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

働いてくれてありがとうMarkus。なぜDataGridCheckBoxColumnのIsReadOnlyプロパティへのバインディングが機能しないのですか? –

+0

私はそれをテストしていませんが、 'AccountComponents/Enabled'のBinding-Expressionは疑わしいと思われます。これは通常、マスター/ディテールのシナリオで使用されます。私の最初の試みはIsReadOnly = "{Binding Enabled}" – Markus

+0

私はそれも変わったと思ったけど、それはデータバインディングポップアップウィンドウからEnabledを選んだときに作成された構文VSです。私はあなたの主張を試みたが、うまくいかなかった。私はdatatemplatecolumnに固執すると思います。ご協力いただきありがとうございます。 –

関連する問題