应用x:key和x:Name

时间:2013-11-16 11:06:22

标签: wpf windows xaml windows-phone

我是Windows手机编程的新手。如果问题太基础,请道歉。

任何人都可以说在什么情况下我应该使用x:Key元素和x:Name元素?

这两者有什么不同?

1 个答案:

答案 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的目标元素时,也会使用名称。