0

私はリストビューを持っていて、次のようにグリッドビューとしてビューを使用しています:

<ListView Grid.Row="1" Grid.Column="0" Height="100" HorizontalAlignment="Left" Margin="10,10,10,10" Name="listView2" VerticalAlignment="Top" Width="300" ItemsSource="{Binding}" SelectionChanged="listView2_SelectionChanged" SelectionMode="Multiple">
            <ListView.View>
                <GridView AllowsColumnReorder="True">

                    <GridViewColumn Header="Select">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <CheckBox  />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>

                    <GridViewColumn DisplayMemberBinding="{Binding Path=FirstName}" Header="First Name" Width="100"/>
                    <GridViewColumn DisplayMemberBinding="{Binding Path=LastName}" Header="Last Name" Width="100"/>

                </GridView>
            </ListView.View>    
        </ListView>

ここでの問題は、ユーザーがチェックボックスをオンにすると、レコードが選択される必要があるということです。また、ユーザーがリストからレコードを選択すると、対応するチェックボックスが選択されます。

どうやってするの ?

4

2 に答える 2

3

あなたのビューモデルには IsSelected プロパティがあると仮定しています:

    public Boolean IsSelected
    {
        get { return isSelected; }
        set
        {
            if (isSelected != value)
            {
                isSelected = value;
                OnPropertyChanged("IsSelected");
            }
        }
    }
    private Boolean isSelected;

それでは、マークアップを変更しましょう。

<ListView ItemsSource="{Binding}" SelectionMode="Multiple">
    <!-- add style for the item in list view: -->
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.View>
        <GridView AllowsColumnReorder="True">

            <GridViewColumn Header="Select">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <!-- bind the checkbox to the IsSelected property: -->
                        <CheckBox IsChecked="{Binding IsSelected, Mode=TwoWay}" />
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>

            <GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Name" Width="100"/>
        </GridView>
    </ListView.View>
</ListView>
于 2012-05-22T11:06:23.163 に答える
2

最も簡単な方法:

      <GridViewColumn Header="None">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <CheckBox Width="50"
                                      Height="50"
                                      IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListViewItem}},
                                                          Path=IsSelected,Mode=TwoWay}" />

                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
于 2012-05-22T12:50:23.073 に答える