2009-11-28 70 views
0

我创建检查列表框下面的模板:WPF选中列表框中的问题

<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属性。产品可能属于一种或多种产品类型。选择模式是多选。如果用户检查额外的产品类型复选框..我需要得到总检查列表框并将它们保存到数据库...这是一个MVVM WPF应用程序...关于如何解决这种情况的任何想法...
在控制模板中IsChecked的路径是什么?

感谢 雷伊

让我simplyfy我的问题:我需要复选框,文本块列表框。文本块数据上下文不同,复选框数据上下文不同。我的意思是他们从不同的对象获取数据。不知道如何实现...

回答

2

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

创建一个新类(一个视图模型),其中包含两个数据上下文(型号1和模型2)和数据绑定到它,也被称为MVVM模式。

0

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

+0

ProductType包含数据库中所有可能的产品类型。基于产品ID,我将从DB获得一个产品对象,其中包含它所属的产品类型的子清单。没有被选择或缺陷的属性。我将有一个产品名称和ID。我会研究datatemplate的事情..谢谢... – Manohar 2009-11-28 05:54:47