首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有嵌套可观测集的UWP 10 (xaml) - MVVM - Listbox

带有嵌套可观测集的UWP 10 (xaml) - MVVM - Listbox
EN

Stack Overflow用户
提问于 2017-06-17 07:08:04
回答 2查看 240关注 0票数 0

所以第一次。而且,我不是一个程序员,更多的是一个抄写员/设计师。

不管怎么说。我有一个Listbox,它为它的itemsSource使用了一个可观察的集合。添加新条目并保存它们并不是一个问题,所有这些都是有效的。(通过INotifyChanged等)进行更改,一切都很好。

XAML:

代码语言:javascript
复制
 <ListBox x:Name="ProjectsListedView"
                 ItemsSource="{Binding Companies.ProjectsListed}"
                 SelectedValue="{Binding ProjectsName}"
                 SelectedIndex="-1"
                 SelectionMode="Extended">
 </Listbox>

这部分起作用了。(除选择的值/索引外)

ProjectsListed是一个可观察的集合,是公司的一部分。所以我的想法是。当我选择一家公司..。出现该公司的上市项目。这是故意的。

但是..。在我的生活中,我无法让“选定的项目”正常工作。

我所尝试的是:

代码语言:javascript
复制
<Setter Property="IsSelected" Value="{Binding IsSelected}"/>

甚至:

代码语言:javascript
复制
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>

两个人都没用。不管怎么说。奇怪的是..。有一个选择正在进行。创建列表框并添加集合时(从xml文件)。我可以选择一个项目。并将所选项中的信息输入文本框。示例:

代码语言:javascript
复制
<TextBox Text="{Binding SelectedItem.ProjectName, Mode=TwoWay, ElementName=ProjectsListedView}"
                 Style="{StaticResource TB_M}"
                 Width="450" 
                 Name="ProjectNameInput" 
                 PlaceholderText=""
                 Grid.Row="0"/>

那么问题是什么:“选定的项目”不能删除。`

代码语言:javascript
复制
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);
    }

谁能为我指出正确的方向(示例将不胜感激)。如果需要更多代码,请询问。如前所述,这是我的第一个问题/帖子。

致以亲切的问候。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-27 11:50:44

我已经解决了大部分的问题。

删除部分要感谢一位朋友的帮助,还有一部分来自kennyzx的评论。

代码语言:javascript
复制
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);
        }

            companies.ProjectsListed.RemoveAt(0);
    }

它可能不会删除所选的内容,但至少是删除了一个条目。

而用于存储“所选项”的修复方法可能有点奇怪,但我只是在

代码语言:javascript
复制
public async void ProjectsListedView_SelectionChanged(object sender, SelectionChangedEventArgs e)

在不同的地方。每一次调用“框架”,它都会重新加载这个。然而,实际选择的设置器(突出显示)没有工作,但总的来说,它是固定的。

感谢那些试图帮助你的人。

票数 0
EN

Stack Overflow用户

发布于 2017-06-17 07:23:39

我认为问题就在这里:SelectionMode="Extended"

如果您查看这里 (如果锚不工作,搜索SelectionMode),您可以找到这一行:

当SelectionMode是多个或扩展时,使用SelectedItems属性获取所选的项。

如果不需要多个选择,请将SelectionMode更改为Single。否则,您需要使用SelectedItems属性而不是SelectedItem

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44601799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档