我想创建带有基于Enum的复选框的列表框。我的枚举包含标志。现在,如果某些checbox变为chcecked / unchecked,我想添加/ sub与该复选框关联的值。 ViewModel包含应存储标志当前值总和的属性。 如何订阅已选中/未选中的事件以及如何获取该复选框包含的值。
以下是代码:
<Page.DataContext>
<self:NewUserViewModel/>
</Page.DataContext>
<Page.Resources>
<ObjectDataProvider x:Key="permEnum" MethodName="GetValues" ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="enums:Permissions"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Page.Resources>
<Grid Background="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}">
<ListBox x:Name="PermissionLbox" ItemsSource="{Binding Source={StaticResource permEnum}}" Height="75" Margin="10,117,10,0" VerticalAlignment="Top">
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding .}"></CheckBox>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
答案 0 :(得分:2)
[Flags]
public enum WeekDays
{
Sunday = 1,
Monday = 2,
Tuesday = 4,
Wednesday = 8,
Thursday = 16,
Friday = 32,
Saturday = 64
}`
将所有枚举类型添加到列表itemsource
list.ItemsSource = Enum.GetValues(typeof(WeekDays));
勾选复选框:
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
var checkBox = (CheckBox)sender;
var dc = checkBox.DataContext;
var actualValue = (WeekDays)Enum.Parse(typeof(WeekDays), dc.ToString());
int Value += (int)actualValue;
}
答案 1 :(得分:0)
使用与ViewModel
属性的双向绑定。将该属性绑定到CheckBox。