Laden...

[Erledigt] Property von Control aus anderem Template ändern

Erstellt von Maliko vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.147 Views
M
Maliko Themenstarter:in
117 Beiträge seit 2012
vor 9 Jahren
[Erledigt] Property von Control aus anderem Template ändern

Hoi,

ich hab da mal ne Frage an euch. Und zwar habe ich zwei DataTemplates welche ineinander Verschachtelt sind (sprich das zweite DataTemplate wird von einer ListBox verwendet, welche sich im ersten DataTemplete befindet).

Nun würde ich gerne von DataTemplate2 (das innere Template) ein Property eines Controls aus DataTemplate1 verändern (über einen Trigger).

Meine Templates sehen wie folgt aus (in Auszügen):

DataTemplate 1


<DataTemplate x:Key="VertragsListBoxTemplate">
    <Border CornerRadius="2" BorderThickness="1" SnapsToDevicePixels="True"
        BorderBrush="Green">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="50" />
            <ColumnDefinition Width="20" />
            <ColumnDefinition Width="705" />
            <ColumnDefinition Width="100" />
            <ColumnDefinition Width="100" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>

        [...]
        <Image Grid.Column="1" Source="{StaticResource iconError}" Height="16" Width="16" x:Name="img_Error" />
        [...]
    </Grid>
</DataTemplate>

DataTemplate 2:


<DataTemplate x:Key="VertragsAnlagenListBoxTemplate">
    <Border CornerRadius="2" BorderThickness="1" SnapsToDevicePixels="True"
                                            BorderBrush="Green">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="510" />
                <ColumnDefinition Width="98" />
                <ColumnDefinition Width="98" />
                <ColumnDefinition Width="98" />
                <ColumnDefinition Width="98" />
            </Grid.ColumnDefinitions>

            [...]
            <Label Grid.Column="4" Content="{Binding Path=Anlage.SysPitBis}" HorizontalAlignment="Left" VerticalAlignment="Center" ContentStringFormat="dd.MM.yyyy">
                <Label.Style>
                    <Style TargetType="{x:Type Label}">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding Path=Anlage.SysPitBis}" Value="01.01.1900">
                                <Setter Property="Background" Value="Red" />
                                <Setter Property="Foreground" Value="White" />
                                <Setter Property="FontWeight" Value="Bold" />
                                <Setter TargetName="img_Error" Property="Visibility" Value="Visible" />
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </Label.Style>
            </Label>
        </Grid>
    </Border>
</DataTemplate>

Hiermit hab ich es bereits versucht:

<Setter TargetName="img_Error" Property="Visibility" Value="Visible" />

Kann mir vielleicht da irgendjemand weiterhelfen?

EDIT: Was ich vergessen habe zu erwähnen, das erste DataTemplate wird auch wiederum von einer ListBox verwendet.

5.299 Beiträge seit 2008
vor 9 Jahren

mir scheint, du willst da eine Validierung durchführen.
Sowas macht man glaub besser im Viewmodel oder gar auf Daten-Ebene.

Habs vergessen, aber da gibts ziemlich listige Unterstützung zu - aber nur, wenn die Datenklassen die entsprechenden Interfaces implementieren.

Recherchiere mal "Validierung Wpf" - da müsste eiglich so einiges kommen.

Der frühe Apfel fängt den Wurm.

M
Maliko Themenstarter:in
117 Beiträge seit 2012
vor 9 Jahren

Genauso hab ich es letztlich auch gemacht. Ich hab im Objekt nen bool angelegt, welcher automatisch auf True gesetzt wird wenn der Fall zutrifft und den anschließend an den Trigger gebunden.