好了,根据您当前的实现,你就必须有一个方法来识别物体的类型,不论其来源。所以最简单的事情就是创建一个你控制的包装器对象,并且可以添加任何想要跟踪对象的信息。事情是这样的:
public class NexusItem
{
public object Item { get; set; }
public Brush Background { get; set; }
}
然后修改UpdateItems方法添加的跟踪数据:
private static void UpdateItems(NexusEditor editor)
{
editor.Items.Clear();
var sourceB = editor.SourceB as IEnumerable;
if (sourceB != null)
{
foreach (object obj in sourceB)
{
var item = new NexusItem() { Item = obj, Background = new SolidColorBrush(Colors.Green) };
editor.Items.Add(item);
}
}
var sourceA = editor.SourceA as IEnumerable;
if (sourceA != null)
{
foreach (object obj in sourceA)
{
var item = new NexusItem() { Item = obj, Background = new SolidColorBrush(Colors.Red) };
editor.Items.Add(item);
}
}
}
现在,您可以更新您的模板绑定到你期望的数据:
<DataTemplate>
<TextBlock Background="{Binding Background}" Grid.Column="1" Grid.Row="1"
Text="{Binding Item.Name}"
HorizontalAlignment="Center" VerticalAlignment="Center" />
</DataTemplate>
现在,说了这么多,我想你会遇到其他问题,基于当前控制体系结构的限制,因为您已经对模板中的传入对象进行了假设。也许你不会,这将适合你的需求,但很好。
这是很难承担很多事情,我建议张贴一些代码和问具体问题。 –
@HariPrasad我已经用这些文件更新了这个问题。让我知道你的想法。 – JokerMartini