16

すべての行のこの列を 内の 1 つのプロパティにバインドする必要があるため、 の を の外のプロパティにバインドする必要がありますが、VisibilityDataGridTemplateColumnが知る限り、それを 内の何かにバインドするか、そうする必要があります使用して、 私はすでにこのコードを試しました:DataGrid.ItemsSourceViewModelItemsSourceElementStyleEditingElementStyle

 <DataGridTemplateColumn Header="post" 
                      Visibility="{Binding DataContext.ProjectPostVisibility
                    , RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=MvvmCommonControl:DataGrid}}"/>

DataGridCell.Visibilityそして、以下のようにバインドすると正常に動作するため、バインディングが正しいと確信しています。

<DataGridTemplateColumn Header="post">
    <DataGridTemplateColumn.CellStyle>
                        <Style TargetType="DataGridCell">
                            <Setter Property="Visibility" Value="{Binding DataContext.ProjectPostVisibility,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=MvvmCommonControl:DataGrid}}"/>
                        </Style>
                    </DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn >
4

3 に答える 3

26

バインディングは正しいですがDataGridTemplateColumn、ビジュアル ツリーにないため、直接は機能しません。したがって、継承ではありませんDataContext

DataGridTemplateColumnコードビハインドからバインドする必要があります。これは、それを行う方法を示すデモです。

于 2013-03-09T12:41:42.367 に答える