我想要一个绑定到集合的复选框列表。所以,当选择的选项,它们被添加到列表---当选项被选中,他们移除。
尝试了多种方法,但未能解决此问题。
模型
public enum WeatherType
{
Rainy,
Sunny,
Cloudy,
Windy
}
视图模型
public class WeatherViewModel : INotifyPropertyChanged
{
public ObservableCollection<WeatherType> WeatherTypes {get;set;}
...
}
XAML
<ObjectDataProvider x:Key="weather"
MethodName="GetValues"
ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="business:WeatherType" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
...
<ItemsControl Grid.Row="4"
Grid.Column="1"
ItemsSource="{Binding Source={StaticResource weather}}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox Content="{Binding}" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
声明一个天气类型的视图模型:
public class WeatherTypeViewModel
{
public WeatherType WeatherType { get; set; }
public bool IsChecked { get; set; }
}
像这样更改您的视图模型:
public class WeatherViewModel : INotifyPropertyChanged
{
public ObservableCollection<WeatherTypeViewModel> WeatherTypes {get;set;}
...
}
和视图-像这样:
<ItemsControl Grid.Row="4"
Grid.Column="1"
ItemsSource="{Binding WeatherTypes}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox Content="{Binding WeatherType}" IsChecked="{Binding IsChecked}"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句