Frage

Ist es möglich, eine MultiTrigger zu verwenden, um Eigenschaften auf mehrere Elemente zu bewerten? Das nicht innerhalb einer Vorlage befindet, ist aber im Usercontrol / Fenster.

Beispiel:

<CheckBox x:Name="checkBox1" />
<CheckBox x:Name="checkBox2" />

<CustomControl>
   <CustomControl.ContentTemplate>
              <DataTemplate>
                        <DataTemplate.Triggers>
                            <MultiTrigger>
                                <MultiTrigger.Conditions>
                                    <Condition
                                        SourceName="checkBox1"
                                        Property="IsChecked"
                                        Value="False" />
                                    <Condition
                                        SourceName="checkBox2"
                                        Property="IsChecked"
                                        Value="True" />
                                </MultiTrigger.Conditions>
                                <MultiTrigger.Setters>
                                    <Setter
                                        Property="Visibility"
                                        Value="Collapsed" />
                                </MultiTrigger.Setters>
                            </MultiTrigger>
                        </DataTemplate.Triggers>
                    </DataTemplate>
</CustomControl.ContentTemplate>

In einem normalen Trigger können wir die Quellname verwenden gegen Eigenschaften auf eine dieser beiden Kontrollkästchen Kontrollen auszulösen, aber mit einem MultiTrigger ich Fehler bekommen zu bauen, wenn es versucht, diese Kontrollen zu finden.

Hinweis: Der Grund, warum ich ein DataTemplate bin mit zu einem Style Gegensatz erwähnt hier

War es hilfreich?

Lösung

Sie können in der Tat Quellennamen verwenden, aber Ihr Datatemplate scheint nicht richtig definiert werden. Ich habe versucht, Ihr Beispiel ausfüllen, das scheint zu funktionieren:

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:sys="clr-namespace:System;assembly=mscorlib">
    <Grid>
        <Grid.Resources>
            <DataTemplate DataType="{x:Type sys:String}">
                <StackPanel>
                    <TextBlock x:Name="textBlock" Text="{Binding}"></TextBlock>
                    <CheckBox x:Name="checkBox1" />
                    <CheckBox x:Name="checkBox2" />
                </StackPanel>
                <DataTemplate.Triggers>
                    <MultiTrigger>
                        <MultiTrigger.Conditions>
                            <Condition
                                SourceName="checkBox1"
                                Property="IsChecked"
                                Value="False" />
                            <Condition
                                SourceName="checkBox2"
                                Property="IsChecked"
                                Value="True" />
                        </MultiTrigger.Conditions>
                        <MultiTrigger.Setters>
                            <Setter
                            TargetName="textBlock"
                                Property="Visibility"
                                Value="Collapsed" />
                        </MultiTrigger.Setters>
                    </MultiTrigger>
                </DataTemplate.Triggers>

            </DataTemplate>
        </Grid.Resources>
        <ContentControl>
            <sys:String>Foo</sys:String>
        </ContentControl>
    </Grid>
</Page>

Das Problem scheint zu sein, dass Sie nicht definieren Ihre Checkboxes innerhalb Ihr Datatemplate, das ist, wo sie sein müssen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top