【发布时间】:2017-11-19 23:19:43
【问题描述】:
所以第一次。另外,我不是程序员,更像是脚本编写者/设计师。
无论如何。我有一个使用可观察集合作为其 itemsSource 的列表框。添加新条目并保存它们不是问题,所有这些都有效。进行更改(通过 INotifyChanged 等)一切正常。
XAML:
<ListBox x:Name="ProjectsListedView"
ItemsSource="{Binding Companies.ProjectsListed}"
SelectedValue="{Binding ProjectsName}"
SelectedIndex="-1"
SelectionMode="Extended">
</Listbox>
这部分有效。 (除了选定的值/索引)
ProjectsListed 是一个可观察的集合,属于公司的一部分。 所以这个想法是。当我选择一家公司时.. 该公司列出的项目出现。这按预期工作。
但是..对于我的生活,我无法让“选定的项目”正常工作。
我的尝试:
<Setter Property="IsSelected" Value="{Binding IsSelected}"/>
甚至:
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>
两者都没有工作。无论如何。奇怪的是.. 正在进行选择。 创建列表框并添加集合时(来自 xml 文件)。我可以选择一个项目..并将所选项目中的信息获取到文本框中。示例:
<TextBox Text="{Binding SelectedItem.ProjectName, Mode=TwoWay, ElementName=ProjectsListedView}"
Style="{StaticResource TB_M}"
Width="450"
Name="ProjectNameInput"
PlaceholderText=""
Grid.Row="0"/>
那么问题是什么: 无法删除“选定项目”。 `
public async static Task DeleteProjectFile(this Company companies)
{
var file = await GetCompanyFile(companies.CompanyName);
if (file == null)
{
var folder = await GlobalFolder();
file = await folder.CreateFileAsync(companies.CompanyName + GlobalFileExtension, CreationCollisionOption.ReplaceExisting);
}
Projects project = new Projects();
companies.ProjectsListed.Remove(project);
}
谁能指出我正确的方向(示例将不胜感激)。如果需要更多代码,请询问。如前所述,这是我的第一个问题/帖子。
亲切的问候。
【问题讨论】:
-
这条线应该做什么?
companies.ProjectsListed.Remove(project);乍一看,project是一个新创建的对象,并且不存在于 observablecollection 中,所以这一行只会抛出异常。 -
据说它应该从列表/xmlfile中删除项目。奇怪的是,有一段时间它起作用了(在我进入列表框之前)。因此,我从未回头看它。 Companies =“父级”,ProjectsListed = observablecollection & remove = 用于从数组/集合中删除项目的命令。此外,当我按下按钮时,我不会抛出任何异常。它也不会崩溃或发生任何事情。 ..所以..
-
那么根据@kennyzx 的评论,您是否更新并解决了您的问题?如果仍有问题,您是否有 minimal reproducible example 供我们测试?
-
修复了这个问题,或者至少修复了这个问题。评论并没有太大帮助,请朋友看看。随意关闭这个(soz,我似乎无法找出在哪里/如何做到这一点)。
-
@SdNA,您可以分享您的解决方案作为答案并标记它。或者自己删除这个话题。见meta.stackexchange.com/questions/42265/…
标签: c# mvvm listbox uwp observablecollection