gpt4 book ai didi

c# - 选择带有MVVM的ListView中的所有项目

转载 作者:行者123 更新时间:2023-12-03 10:14:07 27 4
gpt4 key购买 nike

我正在尝试使用mvvm在 ListView 中选择所有项目。使用后台代码,我尝试使用 SelectAll() foreach 来选择它们,但是我想像本项目的其余部分一样使用MVVM。有任何想法吗?

这是列表 View :

<ListView x:Name="TransformerList"  ItemsSource="{Binding CurrentStations}" Margin="16,250,0,10.4" SelectionMode="Multiple" HorizontalAlignment="Left" Width="411">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Select">
<i:InvokeCommandAction Command="{Binding SeeAllCustomersCommand}" CommandParameter="{Binding Item1}"/>
</i:EventTrigger>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding SelectedCustomersChangedCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="IsSelected" Value="{Binding Mode=TwoWay, Path=IsSelected}" />
<Setter Property="IsSelected" Value="{Binding Mode=TwoWay, Path=TransformerIsSelected}" />
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridViewColumn Header="Nettstasjon" Width="70" DisplayMemberBinding="{Binding Path=Name}" />
<GridViewColumn Header="Område" Width="210" DisplayMemberBinding="{Binding Path=Area}"/>
<GridViewColumn Header="Radial" Width="110" DisplayMemberBinding="{Binding Path=Radial}"/>
</GridView>
</ListView.View>
</ListView>

和按钮:
public ICommand cmd_VelgAlle { get { return new RelayCommand(on_cmd_VelgAlle);  } }
private void on_cmd_VelgAlle()
{
foreach (item i in CurrentStations) //the item here gives an error "type or namespace could not be found"
{
i.TransformerIsSelected = true;
}
}

和mvvm:
private bool _TransformerIsSelected;
public bool TransformerIsSelected
{
get { return _TransformerIsSelected; }
set
{
_TransformerIsSelected = value;
RaisePropertyChanged("TransformerIsSelected");
}
}

最佳答案

您需要创建一个ListViewItem Style:

<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
</Style>
</ListView.ItemContainerStyle>

Model类中创建一个属性:
public bool IsSelected
{
get { return isSelected; }
set
{
isSelected = value;
RaiseChange("IsSelected");
}
}

然后迭代您的ItemSource为所有项目设置 IsSelected true。(在ViewModel中为 )
foreach(item i in yourCollection)
{
i.IsSelected = true;
}

更新:

将样式用作:
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="IsSelected" Value="{Binding Mode=TwoWay, Path=TransformerIsSelected}" />
</Style>
</ListView.ItemContainerStyle>

命令:
 private void on_cmd_VelgAlle()
{
//Item is the class your CurrentStations is made of(i guess something like `station` in your design)
//i.e if CurrentStations is list of string then Item will be string
foreach (Item i in CurrentStations)
{
i.TransformerIsSelected = true;
}
}

关于c# - 选择带有MVVM的ListView中的所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35377217/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com