1

我有以下 XML 从中获取 ID 并将其填充到列表中:

<TestCase ID="TEST">
   <Frames>
     <Frame>ff</Frame>
     <Frame>ff 53</Frame>
   </Frames>
</TestCase>

我创建了一个List如下:

public List<CheckedListItem> AvailableFrames;

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

我创建 CheckListBox 的 Xaml 如下,

<xctk:CheckListBox x:Name="ListBox_TestCase"
                   ItemsSource="{Binding AvailableFrames}"
                   SelectedMemberPath="{Binding IsChecked}"
                   SelectedValue="{Binding Name}"/>

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

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?我猜我有一个绑定问题。

请指教。

截屏: 截屏

4

2 回答 2

2

您以错误的方式填充SelectedMemberPathandSelectedValue属性。不要使用{Binding}语法,请尝试以下操作:

<xctk:CheckListBox ... ItemsSource="{Binding AvailableFrames}" SelectedMemberPath="IsChecked" DisplayMemberPath="Name" ValueMemberPath="Id"/>
于 2014-08-26T10:53:09.650 回答
1

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

我们还可以使用为每个条目制作一个带有复选框的 ListBox,如下所示,Modern UI 支持。

<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>
于 2014-08-28T09:29:22.667 回答