我有一个带有多个项目的Combobox(C#标签,因为我想更改单个文本颜色)。在回调中,当编辑一些文本框时,我会更改项目的颜色和/或文本。当我点击组合框时,我看到列表中的项目具有正确的颜色/文本。但是,所选项目的颜色/文本更改不会直接反映在显示的组合框文本中。我怎样才能做到这一点?
我试图设置组合框本身的Text属性:没有效果。同时将所选项目设置为空标签,然后将其设置回正确的标签无效。如果我将SelectedIndex设置为-1,然后返回到正确的选定索引,它将工作并显示所显示的文本,但这会触发我不想要的SelectionChanged回调。我可以先从组合框中分离SelectionChanged回调,然后重新附加它,但这在我看来非常难看。
也许我错过了一些简单的事情......
修改 我按照SLak的建议尝试绑定:
List<Label> labels;
MyComboBox.ItemsSource = labels;
结果仍然相同。假设选择了索引0。当我更改相应的标签时:
labels[0].Contents = "new content";
然后它没有反映在组合框的选定文本中。当我单击组合框时,我可以在展开列表中看到新文本,但只有当我更改选择然后返回到索引0时,组合框将新文本显示为所选项目。该同步应该是自动的。