我有以下(非常简单)ItemsControl:
在代码中,我想做以下事情:
foreach (var dahCurrentItem in BlahList.Items) { var ItemCheckBox = BlahList.GimmeMyControl(dahCurrentItem, "MyCheckBox") // I'm going to do something with the check box here... }
我怎么做?
好吧,肯特得到了信誉,但它只是大多数是正确的:)
// This part was good: var container = _itemsControl.ItemContainerGenerator.ContainerFromItem(dahCurrentItem) as FrameworkElement;
但是......第二部分会返回null,所以它必须如下:
var checkBox = _itemsControl.ItemTemplate.FindName("MyCheckBox", container) as CheckBox;
他的代码看起来应该有效,但对于我的情况,我不得不这样做.
首先,如果有任何方法可以避免它,请不要.将各种属性绑定CheckBox
到视图模型而不是尝试手动拉出它们要清晰得多.
也就是说,如果你需要去你的CheckBox
,你可以使用这样的代码:
var container = _itemsControl.ItemContainerGenerator.ContainerFromItem(dahCurrentItem) as FrameworkElement; var checkBox = container.FindName("MyCheckBox") as CheckBox;