Не може да се свърже със свойството на една контрола в DataTrigger с друга контрола в различни мрежи

Имам два контрола в този пример, но в реалното приложение имам много повече в зависимост от стойността на свойството Съдържание на етикет в мрежа (например), някои други етикети, текстови полета, текстови блокове и бутони ще бъдат видими или свити в Grid two (например).

Но за да опростя проблема си, ще имам опростен пример...

<Grid Name="gridOne">
    <Label Content="{Binding Collection.Name}" Name="lblCaption"/>
</Grid>

<Grid Name="gridTwo">
    <Label Content="My Label" Visibility="Collapsed">
        <Label.Style>
            <Style TargetType="Label">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=lblCaption, Path=Content}" Value="Employers">
                        <Setter Property="Visibility" Value="Visible"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Label.Style>
    </Label>
    <TextBox Text="{Binding EmployerName}" Visibility="Collapsed">
        <TextBox.Style>
            <Style TargetType="TextBox">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=lblCaption, Path=Content}" Value="Employers">
                        <Setter Property="Visibility" Value="Visible"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBox.Style>
    </TextBox>
</Grid>

Знам, че това също няма да работи, ако задам свойството Visibility като Collapsed по подразбиране в контрола, но имам много колекции и не мисля, че наличието на един DataTrigger за всяка колекция е добър начин да го постигна. Както и да е, един проблем възниква при обвързването на контроли в различни мрежи, а друг при обработката на свойството Visibility по добър начин.

Благодаря предварително!


person Miguel    schedule 07.11.2011    source източник


Отговори (1)


Локалната стойност има предимство пред задействанията на стила. Преместете инициализацията на видимостта вътре в стила като:

<Label Content="My Label">
  <Label.Style>                    
    <Style TargetType="Label">
      <Setter Property="Visibility" Value="Collapsed"/>
      <Style.Triggers>
        <DataTrigger Binding="{Binding ElementName=lblCaption, Path=Content}" Value="Employers">
          <Setter Property="Visibility" Value="Visible"/>
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </Label.Style>
</Label>
person anivas    schedule 07.11.2011