我有以下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
中?我猜我有一个约束性的问题。
请建议。
截图:
答案 0 :(得分:2)
您以错误的方式填充SelectedMemberPath
和SelectedValue
属性。请尝试以下方法,而不是使用{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>