我是Windows手机编程的新手。如果问题太基础,请道歉。
任何人都可以说在什么情况下我应该使用x:Key元素和x:Name元素?
这两者有什么不同?
答案 0 :(得分:6)
x:Key
在需要在ResourceDictionary中定义元素时使用。
例如:你不想在xaml中使用的样式或某个元素。
<Style TargetType=Button x:Key="MyBtnStyle>
......
<myLocalNs:MyType x:Key="MyType1" />
x:Name
当您不想参考“守则背后”中的元素时会使用
<UserControl>
<Grid x:Name="grid">
<Button x:Name="btn" />
</Grid>
</UserControl>
UserControl.cs中的:
btn.Contnent = "Im A Button";
grid.RowDefenitions.Add(new RowDefenition());
使用x的另一种情况:名称是在使用 TargetName
通过触发器在ControlTemplate / DataTemplate / Style中定位元素时例如:
<DataTemplate DataType="{x:Type h:HierarchicalNode}">
<Grid>
<CheckBox x:Name="chkbox" />
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding HasChildren}" Value="False">
<Setter Property="Visibility" Value="Collapsed" TargetName="chkbox"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
另一种情况是你不想绑定到XAML中的元素。
<UserControl>
<Grid x:Name="grid">
<Button x:Name="btn" Content="{Binding ElementName=grid ,Path=Name}"/>
</Grid>
</UserControl>
仅供参考,x:当你想使用交互触发器或VisualState的目标元素时,也会使用名称。