无法使用List<>中的条目填充CheckListBox

时间:2014-08-26 10:46:49

标签: c# wpf wpftoolkit checkboxlist xceed

我有以下XML,从中获取ID并填充到List:

<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填充&#34;名称&#34; CheckBoxList项的条目。它以某种方式获取条目数(在我的情况下为5)并填充5个空的checkList项,但是名称或&#34; ID&#34;中的值。没有反映。

为什么来自List<AvailableFrames>的{​​{1}}的值不会出现在CheckBoxList中?我猜我有一个约束性的问题。

请建议。

截图: ScreenShot

2 个答案:

答案 0 :(得分:2)

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

<xctk:CheckListBox ... ItemsSource="{Binding AvailableFrames}" SelectedMemberPath="IsChecked" DisplayMemberPath="Name" ValueMemberPath="Id"/>

答案 1 :(得分:1)

看起来像#34;现代用户界面&#34;或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>