如何将父母的财产绑定到其子女的财产?

时间:2010-06-04 17:07:56

标签: silverlight data-binding groupbox

我有一个GroupBox,它定义如下

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:Groupbox"
    >
    <Style TargetType="local:GroupBox">
        <Setter Property="BorderBrush" Value="DarkGray"/>
        <Setter Property="BorderThickness" Value="1"/>
        <Setter Property="Padding" Value="6"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="local:GroupBox">
                    <Grid Background="{TemplateBinding Background}">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="*"/>
                        </Grid.RowDefinitions>
                        <Border BorderThickness="{TemplateBinding BorderThickness}" Grid.Row="1" Grid.RowSpan="2" BorderBrush="{TemplateBinding BorderBrush}" CornerRadius="3">
                            <Border.Clip>
                                <GeometryGroup FillRule="EvenOdd">
                                    <RectangleGeometry x:Name="FullRect" Rect="0,0,300,200"/>
                                    <RectangleGeometry x:Name="HeaderRect" Rect="6,0,100,100"/>
                                </GeometryGroup>
                            </Border.Clip>
                        </Border>
                        <ContentPresenter Grid.Row="2" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Margin="{TemplateBinding Padding}"/>
                        <ContentControl x:Name="HeaderContainer" Margin="6,0,0,0" Grid.Row="0" Grid.RowSpan="2" HorizontalAlignment="Left">
                            <ContentPresenter Margin="3,0,3,0" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}"/>
                        </ContentControl>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

我正在使用这个控件

<Controls:GroupBox x:Name="GroupBox">
   <Controls:GroupBox.HeaderTemplate>
     <DataTemplate>
        <CheckBox "Header" x:Name="cbHeader"/>
     </DataTemplate>
   </Controls:GroupBox.HeaderTemplate>
<Controls:GroupBox>

所以,好吧,我的问题 - 如何将GroupBox的属性IsEnabled绑定到Checkbox属性IsChecked? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

没试过,但你应该可以这样做:

<Controls:GroupBox x:Name="MyGroupBox">
   <Controls:GroupBox.HeaderTemplate>
     <DataTemplate>
        <CheckBox IsChecked="{Binding Path=IsEnabled, ElementName=MyGroupBox, Mode=TwoWay}" Content="Header" x:Name="cbHeader" />
     </DataTemplate>
   </Controls:GroupBox.HeaderTemplate>
<Controls:GroupBox>

答案 1 :(得分:0)

实际上没有必要定义DataTemplate。此代码的工作方式相同。

<Panels:GroupBox>
  <Panels:GroupBox.Header>
    <CheckBox Content="Header" x:Name="cbHeader" IsChecked="{Binding IsHeaderChecked}" />
  </Panels:GroupBox.Header>
  <ContentControl HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" IsEnabled="{Binding Path=IsChecked, ElementName=cbHeader}"/>
</Panels:GroupBox>