WPF DataContext以及Tag的简单绑定

  在WPF中有许多时候绑定到同一个对象上,因此就有一个隐式的数据源DataContext,有时把一个父控件直接设置成DataContext,当一个控件没有显示源对象时,WPF会遍历整个逻辑树,找到一个非空的Datacontext属性绑定上去。

  还有在一些情况下可以通过Tag来绑定一些东西,也可以把一些属性绑定到Tag上面去。下面有一个最简单的例子我把Context和Tag都写在了里面:

View Code
    <Window.Resources>
        <SolidColorBrush x:Key="myBrush" Color="Gold" />
    </Window.Resources>
    <Grid DataContext="{StaticResource myBrush}">
        <StackPanel>
            <Label x:Name="label" Background="{Binding}" Height="30"/>
            <TextBox Text="test1" Tag="{Binding ElementName=TxtBx2, Path=DataContext}" x:Name="TxtBx1"/>
            <TextBox Text="test2" x:Name="TxtBx2"/>
            <TextBox Text="{Binding ElementName=TxtBx1,Path=Tag}" x:Name="TxtBx3" />
        </StackPanel>
    </Grid>

  然后如果需哟通过绑定一些ListBox或ComboBox的选中项的话则需要使用这种类型的绑定:

<Button Tag="{Binding SelectedItem, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}"/>

同时还需要注意的是:采用binding形式的tag只能在OnLoad时获取,如果tag为常量,则在ApplyTemplate时获取。

posted @ 2012-10-21 02:05  世界很灰暗  阅读(3625)  评论(0编辑  收藏  举报