【发布时间】:2019-10-15 00:20:17
【问题描述】:
这是我的问题:
我想在另一个类的方法中访问通过可绑定集合绑定到 ListBox 的项目(及其属性)。 (ShellViewModel) 更准确地说:我想知道当前选择了此列表中的哪些项目。
我使用的是C#,Caliburn.Micro,设计模式应该是MVVM。
如果按下“评估”按钮,根据选择的ListBoxItems,调用不同的方法。
因此,ShellView 中的 XAML 代码工作正常,“功能”代码也“工作”,但如果我直接在 xaml.cs 文件中编码,它就可以工作。 (大不,不)
因为我对这个主题很陌生,所以我尝试为访问创建一个新的 View 实例,但这只会让我控制 ListBox 而不“知道”在原始项目中选择了哪些项目实例。
这里是一般的列表框
<ListBox x:Name="MainListBox" ItemsSource="{Binding SCollection}"
Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="6" Grid.RowSpan="1"
SelectionMode="Multiple"
ScrollViewer.VerticalScrollBarVisibility="Visible"
ScrollViewer.HorizontalScrollBarVisibility="Visible"
MaxHeight="300" MinHeight="200" MaxWidth="340" Margin="5">
<ListBox.ItemTemplate>
<DataTemplate>
<Border Margin="0,5">
<StackPanel>
<TextBlock Text="{Binding Path=Name}" FontWeight="Bold" Padding="3,5,5,5" />
<TextBlock Text="{Binding Path=Info}" FontWeight="SemiBold" Padding="3,5,5,5" />
</StackPanel>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Button x:Name="Evaluate" Background="Blue" Grid.Column="1" Grid.Row="7" MinWidth="80" Margin="5" Content="Test" Grid.ColumnSpan="1" />
这里有一些问题:
是否有类似的解决方案,例如通过 xaml 绑定“SelectedItem”,它绑定到多个选定项目的可访问变量?(也许我只是错过了那里的东西?)
有没有办法访问 ListBox 的“原始”实例(以及因此“实时”选择的项目)?
要明确: 唯一的问题是,除了其他更好的解决方案之外,我希望绑定到按钮的调用方法“Evaluate”能够深入了解在我的 ListBox 中选择了哪些项目。
【问题讨论】:
标签: c# mvvm caliburn.micro