C# 绑定Listview SelectedItems以执行操作
我正在努力将2个ListView所选项目绑定到我的viewmodel。C# 绑定Listview SelectedItems以执行操作,c#,wpf,mvvm,data-binding,caliburn.micro,C#,Wpf,Mvvm,Data Binding,Caliburn.micro,我正在努力将2个ListView所选项目绑定到我的viewmodel。 其思想是在视图之间有两个listview和两个按钮,以将(多个)选定项从一个listview移动到另一个listview(双向) 观点: <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="Auto"/>
其思想是在视图之间有两个listview和两个按钮,以将
(多个)选定项从一个listview移动到另一个listview(双向) 观点:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<ListView x:Name="DuamResources" Grid.Column="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<ListView.View>
<GridView>
<GridViewColumn Header="Id" DisplayMemberBinding="{Binding Id}"/>
<GridViewColumn Header="Description" DisplayMemberBinding="{Binding Name}"/>
</GridView>
</ListView.View>
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock FontWeight="Bold" FontSize="14" Text="{Binding Name}"/>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListView.GroupStyle>
</ListView>
<StackPanel Grid.Column="1" Orientation="Vertical" cal:Action.TargetWithoutContext="{Binding SelectedDuamResources}" VerticalAlignment="Center">
<Button Content="<" Width="40" Margin="5" cal:Message.Attach="AddSelectedResources($datacontext)"/>
<Button Content=">" Width="40" Margin="5"/>
</StackPanel>
<ListView x:Name="AvailableDuamResources" Grid.Column="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<ListView.View>
<GridView>
<GridViewColumn Header="Id" DisplayMemberBinding="{Binding Id}"/>
<GridViewColumn Header="Description" DisplayMemberBinding="{Binding Name}"/>
</GridView>
</ListView.View>
<ListView.GroupStyle>
<GroupStyle HidesIfEmpty="True">
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock FontWeight="Bold" FontSize="14" Text="{Binding Type}"/>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListView.GroupStyle>
</ListView>
</Grid>
关联的viewmodel属性:
private ObservableCollection<DuamResourceInfo> availableDuamResources;
public ObservableCollection<DuamResourceInfo> AvailableDuamResources
{
get { return availableDuamResources; }
set { availableDuamResources = value; NotifyOfPropertyChange(() => AvailableDuamResources); }
}
private ObservableCollection<DuamResourceInfo> selectedDuamResources;
public ObservableCollection<DuamResourceInfo> SelectedDuamResources
{
get { return selectedDuamResources; }
set { selectedDuamResources = value; NotifyOfPropertyChange(() => SelectedDuamResources); }
}
private ObservableCollection<DuamResourceInfo> duamResources;
public ObservableCollection<DuamResourceInfo> DuamResources
{
get { return duamResources; }
set { duamResources = value; NotifyOfPropertyChange(() => DuamResources); }
}
private observetecollection availableDuamResources;
公共可观测集合可用AMResources
{
获取{return availableDuamResources;}
设置{availableDuamResources=value;NotifyOfPropertyChange(()=>availableDuamResources);}
}
私有可观测集合选择的数据源;
公共可观测集合选择的数据源
{
获取{return selectedDuamResources;}
设置{selectedDuamResources=value;NotifyOfPropertyChange(()=>selectedDuamResources);}
}
私人可观测收集数据资源;
公共可观测收集数据资源
{
获取{return duamResources;}
设置{duamResources=value;NotifyOfPropertyChange(()=>duamResources);}
}
我想要实现的代码:
public void AddSelectedResources(IEnumerable<DuamResourceInfo> resources)
{
}
public void RemoveSelectedResources(IEnumerable<DuamResourceInfo> resources)
{
}
public void AddSelectedResources(IEnumerable资源)
{
}
public void移除选定资源(IEnumerable resources)
{
}
我正在为MVVM使用Caliburn Micro。我知道有一些绑定约定,但我不确定它们是否适用于此场景
非常感谢您的帮助 您是否尝试过使用“x:Bind”而不是“Binding”?由于某种原因,在过去,一个或另一个对我有效,但不是两个都有效,这取决于具体情况。您是否尝试过使用“x:Bind”而不是“Binding”?由于某种原因,在过去,其中一个对我有效,但不是两个都有效,这取决于具体情况