我正在使用以下模板创建选中列表框:
<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的路径是什么?
由于 雷伊
让我简单地回答一下我的问题:我需要一个带复选框和文本块的列表框。文本块数据上下文不同,复选框数据上下文不同。我的意思是他们从不同的对象获取数据。不知道如何实现这个......
答案 0 :(得分:2)
让我简单地回答一下我的问题:我需要一个 复选框和文本块的列表框。 文本块数据上下文不同 和复选框数据上下文是 不同。我的意思是他们得到他们的数据 来自不同的对象。不知道怎么做 实现这一目标......
创建一个新类(ViewModel),它包含两个数据上下文(Model1和Model2),并且数据绑定到它,也称为MVVM模式。
答案 1 :(得分:0)
您绑定到ListBox的ProductType类应该具有可以绑定的名为IsSelected或IsChecked的读/写属性。然后使用ListBox.ItemTemplate上的DataTemplate而不是使用ControlTemplate,并将CheckBox的IsChecked属性绑定到该属性。