2016-06-10 32 views
1

我想創建基於枚舉複選框的列表框。我的枚舉包含標誌。現在,如果某個checbox變爲chchcked/unchecked,我想添加與該複選框關聯的子值。 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> 

回答

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; 
} 
0

使用雙向具有約束力您的ViewModel的財產。將該屬性綁定到CheckBox。

+0

但是,如果我設置了兩個複選框,而不是隻有一個標誌內的propery。相反,我想存儲它們的總和。 – igorr