0

コレクションにバインドするチェックボックスのリストが必要です。したがって、オプションが選択されると、リストに追加されます。オプションが選択解除されると、それらは削除されます。

いくつかのアプローチを試みましたが、これを解決できませんでした。

モデル

 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>
4

1 に答える 1

1

天気の種類のビュー モデルを宣言します。

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>
于 2013-07-27T07:24:49.507 に答える