首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用来自CheckListBox的条目填充List<>

无法使用来自CheckListBox的条目填充List<>
EN

Stack Overflow用户
提问于 2014-08-26 10:46:49
回答 2查看 1.9K关注 0票数 1

从其中获取ID并将其填充到列表中的XML如下:

代码语言:javascript
复制
<TestCase ID="TEST">
   <Frames>
     <Frame>ff</Frame>
     <Frame>ff 53</Frame>
   </Frames>
</TestCase>

我创建了一个List,如下所示:

代码语言:javascript
复制
public List<CheckedListItem> AvailableFrames;

public class CheckedListItem
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsChecked { get; set; }
}

我创建CheckListBox的Xaml如下,

代码语言:javascript
复制
<xctk:CheckListBox x:Name="ListBox_TestCase"
                   ItemsSource="{Binding AvailableFrames}"
                   SelectedMemberPath="{Binding IsChecked}"
                   SelectedValue="{Binding Name}"/>

下面是如何将从XML解析的条目分配给List,然后分配给CheckBoxList

代码语言:javascript
复制
private void Button_TestCase_Click(object sender, RoutedEventArgs e)
{
    MessageBoxButton btn = MessageBoxButton.OK;
    try
    {
        TestCases1 = Serializer.Deserialize("TEST.xml");
        AvailableFrames = new List<CheckedListItem>();
        if (TestCases1 != null)
        {
            Int32 xx = 0;
            foreach (TestCase item in OSDPTestCases1.TestCases)
            {
                AvailableFrames.Add(new CheckedListItem() {Id = xx++, Name = item.ID, IsChecked = false });
            }
        }

        ListBox_TestCase.ItemsSource = AvailableFrames;    
    }
    catch (Exception ex)
    {
        var result = ModernDialog.ShowMessage(ex.Message, "Error", btn);
    }
}

但是,我无法获得列表AvailableFrames来填充到CheckBoxList项的“名称”条目。它以某种方式获取条目的数量(在我的例子中为5),并填充5个空的checkList项,但是"ID“中的名称或值没有反映出来。

为什么List<AvailableFrames>的值没有出现在CheckBoxList中?我猜我有一个有约束力的问题。

请指点。

ScreenShot:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-28 09:29:22

看起来“现代UI”或mui不支持CheckListBox。当我从我的项目中移除mui界面时,我可以让它正常工作。

我们还可以为每个条目使用make一个带有复选框的ListBox,如下所示,这是由现代UI支持的。

代码语言:javascript
复制
<ListBox x:Name="ListBox_TestCase" ItemsSource="{Binding AvailableFrames}" Margin="172,10,283,15" >
    <ListBox.ItemTemplate>
        <HierarchicalDataTemplate>
            <CheckBox x:Name="CheckBox_TestCase" Content="{Binding Name}" IsChecked="{Binding IsChecked}"/>
        </HierarchicalDataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
票数 1
EN

Stack Overflow用户

发布于 2014-08-26 10:53:09

您正在以错误的方式填充SelectedMemberPathSelectedValue属性。不要使用{Binding}语法,而是尝试以下方法:

代码语言:javascript
复制
<xctk:CheckListBox ... ItemsSource="{Binding AvailableFrames}" SelectedMemberPath="IsChecked" DisplayMemberPath="Name" ValueMemberPath="Id"/>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25503924

复制
相关文章

相似问题

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