ListView中CellTemplate的CheckBox状态

时间:2011-04-20 08:37:26

标签: wpf xaml styles resourcedictionary

我正在尝试使用样式来防止重复代码,方法是将它们放入Resource Disctionary中。

我的问题是,当我们在ListView中有一个GridViewColumn,其中一个列有一个DataTemplate,而在那个DataTemplate中我们只有一个CheckBox的CellTemplate时,我们可以在DataTemplete处于一个时绑定CheckBox状态的ResourceDictionary?

我在XAML中拥有的是什么:

<ListView Name="listView">
    <ListView.View>
        <GridView AllowsColumnReorder="False">
            <GridViewColumn DisplayMemberPath="{Binding [1]}"/>
            <GridViewColumn DisplayMemberPath="{Binding [2]}"/>
            <GridViewColumn DisplayMemberPath="{Binding [4]}"/>
            <GridViewColumn DisplayMemberPath="{Binding [5]}"/>
            <GridViewColumn DisplayMemberPath="{Binding [6]}"/>
            <GridViewColumn DisplayMemberPath="{Binding [7]}"/>
            <GridViewColumn>
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <CheckBox IsThreeState="False" IsChecked="{Binding [8]}" Unchecked="CheckBox_Changed" Checked="CheckBox_Changed"/>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>

我正在尝试在资源字典中执行类似的操作:

<DataTemplate x:Key="ListViewCheckboxCell">
    <StackPanel>
        <CheckBox IsThreeState="False" IsChecked="Make reference"/>
    </StackPanel>
</DataTemplate>

该列中的值始终是一个bool。

提前致谢!

1 个答案:

答案 0 :(得分:1)

你所做的似乎是正确的。你现在必须写

<GridViewColumn CellTemplate="{StaticResource ListViewCheckboxCell}" />

模板将被考虑在内,您可以在资源字典中保留与原始模板完全相同的模板:绑定是动态解析的,因此当读取XAML时,绑定将自动设置为相关对象,按照你的指示