我最近有一个非常有趣的场景,如果有人可以向我解释xaml中+的含义,如果它有任何东西,那就是徘徊。
注意:我使用的是VS2010
以下是我的datatemplate:
<DataTemplate DataType="{x:Type myViewModel}">
<Border Style="{StaticResource CmyTheme}"
PreviewMouseDown="My_OnPreviewMouseDown" x:Name="myBorder">
...
<ItemsControl Grid.Column="1" HorizontalAlignment="Stretch"
ItemsSource="{Binding Path=myList}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical" Name="myListSP" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>+
</ItemsControl>
</Grid>
</StackPanel>
</Border>
</DataTemplate>
正如您所看到的,</ItemsControl.ItemsPanel>
标记是 + 符号,现在当代码编译时它从未抱怨过这个+符号所以我没有意识到它在那里。然后我的程序运行良好,直到需要使用DataTemplate然后我收到一个错误:当ItemsSource正在使用时,操作无效。使用ItemsControl.ItemsSource访问和修改元素。
无论如何,我已经取消了+符号,一切正常。但是我很好奇编译器从不抱怨+的原因? +在xaml中有意义吗?
答案 0 :(得分:1)
正如dlev所说,在你的情况下,+
只是列表中与ItemsSource
绑定冲突的项目。它也可以是任何其他字符,字符串或对象。
但是,XAML中的“+”符号有一个特殊的含义,虽然它与您的特定情况无关,但对于其他人来说,这对您来说可能很有意思。很高兴为您了解。
考虑嵌套的类结构,例如
public class Parent
{
public Child Foo { get; set; }
public class Child
{
public string Bar { get; set; }
}
}
在WPF中,类型Parent.Child
(C#)转换为Parent+Child
(XAML),可以与{x:Type ...}
一起使用。例如:
<DataTemplate DataType="{x:Type vm:Parent+Child}" />
只是为了完整,也许这对某些人来说很有意思......