wpf检查列表框问题

时间:2009-11-28 05:39:15

标签: wpf checkedlistbox

我正在使用以下模板创建选中列表框:

<Style x:Key="CheckBoxListStyle" TargetType="{x:Type ListBox}">
            <Setter Property="SelectionMode" Value="Multiple"></Setter>
            <Setter Property="ItemContainerStyle">
                <Setter.Value>
                    <Style TargetType="{x:Type ListBoxItem}" >
                        <Setter Property="Margin" Value="2" />
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="{x:Type ListBoxItem}">
                                    <CheckBox IsChecked="{Binding Path=xxxxxxxxxxx,RelativeSource={RelativeSource TemplatedParent},Mode=TwoWay}">                                                                             <ContentPresenter></ContentPresenter>
                                    </CheckBox>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </Setter.Value>
            </Setter>
        </Style>

 <ListBox Style="{StaticResource CheckBoxListStyle}" ItemsSource="{Binding Path=Configuration.ProductTypes}" DisplayMemberPath="ProductName" />  

我的问题是,我从数据库获取所有产品类型并将其绑定到列表框itemssource。我有一个产品类,其中包含它所属的产品类型列表。我需要根据产品的产品类型列表设置复选框的IsChecked属性。通常我需要设置一个或多个复选框IsChecked属性。产品可能属于1种或更多种产品类型。和选择模式是多选。如果用户检查其他产品类型复选框..我需要获取总检查列表框并将它们保存到数据库...这是一个MVVM WPF应用程序...任何关于如何解决这种情况的想法... <登记/> 在controltemplate中,IsChecked的路径是什么?

由于 雷伊

让我简单地回答一下我的问题:我需要一个带复选框和文本块的列表框。文本块数据上下文不同,复选框数据上下文不同。我的意思是他们从不同的对象获取数据。不知道如何实现这个......

2 个答案:

答案 0 :(得分:2)

  

让我简单地回答一下我的问题:我需要一个   复选框和文本块的列表框。   文本块数据上下文不同   和复选框数据上下文是   不同。我的意思是他们得到他们的数据   来自不同的对象。不知道怎么做   实现这一目标......

创建一个新类(ViewModel),它包含两个数据上下文(Model1和Model2),并且数据绑定到它,也称为MVVM模式。

答案 1 :(得分:0)

您绑定到ListBox的ProductType类应该具有可以绑定的名为IsSelected或IsChecked的读/写属性。然后使用ListBox.ItemTemplate上的DataTemplate而不是使用ControlTemplate,并将CheckBox的IsChecked属性绑定到该属性。