我有一个组合框,其数据源来自我的DataBase中的表。因此,我的组合中的每个项目都是表格中的对象。该Object具有一个属性,该属性对应于一个充满“1”或“0”的字符串。另一方面,我有一个带有此模板的ListBox内的复选框列表:
<ListBox Height="150" MinHeight="100" HorizontalAlignment="Center" Name="lstEstudios" VerticalAlignment="Top" Width="200"
ItemsSource="{Binding}" SelectionMode="Multiple" Margin="0,20,0,0">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox Name="chkEstudios" Width="Auto" Content="{Binding Path=Nom_estudio}"
Checked="chkEstudios_Checked" Unchecked="chkEstudios_Unchecked"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我不知道是否可能,但我想要做的是,对于属性集中的每个“1”或“0”,选中或取消选中复选框,具体取决于是否有“1”选中复选框或如果为“0”取消选中该复选框,依此类推...使用ListBox中的所有复选框,该怎么做?
答案 0 :(得分:3)
我用我自己的具有CustomTask类的示例尝试了同样的事情。
<ListBox ItemsSource="{Binding CustomTasks}">
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding TaskStatus, Converter={x:Static testApp:StatusToBooleanConverter.Instance}}" Content="{Binding TaskStatus}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
其中TaskStatus
是两个值中的boolean
,即Completed
和Pending
。
这是转换器的代码
public class StatusToBooleanConverter : IValueConverter
{
public static StatusToBooleanConverter Instance = new StatusToBooleanConverter();
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is Status)
{
switch ((Status)value)
{
case Status.Completed:
return true;
case Status.Pending:
return false;
}
return null;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
试试吧。希望有所帮助。
答案 1 :(得分:0)
这是使用转换器的好地方。如果你有一个包含1和0的属性,并且想要将这些属性转换为true / false,那么请尝试使用转换器来完成工作。转换器背后的基本思想是获取输入值(来自绑定属性),顾名思义,将其转换为不同的值。你可以根据自己的意愿使它们变得简单或复杂,然后转向&#34; 1&#34;变为真和&#34; 0&#34;变成假应该很快。
您将复选框的IsChecked属性绑定到1和0的源,并且在绑定中也使用转换器。
如果您还没有制作过值转换器,请在此处制作一个很好的教程:http://wpftutorial.net/ValueConverters.html