在WPF中设置子项的父属性

时间:2012-03-07 10:40:05

标签: c# wpf xaml

我创建了一个状态栏:

    <StatusBar>
        <StatusBarItem >
            <WrapPanel>
                <Image Source="/MyApp;component/Images/icon.png" />
                <TextBlock Name="_StatusbarUser" Text="Username"  />
            </WrapPanel>
        </StatusBarItem>
    </StatusBar>

当我将文本块可见性设置为折叠时,如何创建触发器, 它还会使父状态栏可见性变得更加分散。

我尝试使用下面的样式,但没有工作

   <StatusBar Grid.Row="2" Name="_Statusbar">
        <StatusBar.Resources>
            <Style TargetType="{x:Type StatusBarItem}">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type TextBlock}}, Path=Visibility}" Value="Collapsed">
                        <Setter Property="Visibility" Value="Collapsed"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </StatusBar.Resources>
        <StatusBarItem>
            <WrapPanel>
                <Image  Source="/MyApp;component/Images/icon.png" />
                <TextBlock Name="_StatusbarUser" Text="Username" />
            </WrapPanel>
        </StatusBarItem>
    </StatusBar>

请帮助,thx

1 个答案:

答案 0 :(得分:3)

更好地将父属性绑定到子属性:

<StatusBar>
    <StatusBarItem Visibility="{Binding ElementName=_StatusbarUser, Path=Visibility}">
        <WrapPanel>
            <Image Source="/MyApp;component/Images/icon.png" />
            <TextBlock Name="_StatusbarUser" Text="Username" />
        </WrapPanel>
    </StatusBarItem>
</StatusBar>