Laden...

Forenbeiträge von RoSi Ingesamt 3 Beiträge

07.01.2008 - 05:00 Uhr

Hallo,

Das Rechnerische passt ja schon mal.
Bei mir reichen die Labels für "Jahre" und "%" noch in die Textboxen und wenn ich Punkte oder Kommas als Tausendertrennung eingebe (für mich besser lesbar), erhalte ich Exception.

07.01.2008 - 02:43 Uhr

Hallo,

vielen Dank und sorry für's falsche Posten.

Für das TabControl selbst existiert auch noch eine Ressource, glaubte jedoch nicht, dass es zu erwähnen galt:


<Style x:Key="tabMenuControlStyle" TargetType="{x:Type TabControl}">
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type TabControl}">
          
            <Grid Height="100">              
              <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition/>
              </Grid.RowDefinitions>
            
              <TabPanel Name="HeaderPanel" Grid.Row="0"              
                IsItemsHost="True" />
             
              <Grid Grid.Row="1">
                <Border Name="Border">                                      
                    <ContentPresenter 
                    Name="CPR_SelectedContentHost"
                    ContentSource="SelectedContent" />                  
                </Border>
              </Grid>
            </Grid>               
        </ControlTemplate>        
      </Setter.Value>           
    </Setter>
    <Setter Property="ItemContainerStyle" Value="{DynamicResource tabMenuItemStyle}" />
  </Style>

Die Grundstruktur ist nicht auf meinem "Mist" gewachsen (versuche mich ja gerade erst einzuarbeiten und verzweifle daran).

Ich verstehe einfach nicht, warum in deinem DataTemplate


<Trigger.Setters>
    <Setter TargetName="rec" Property="Opacity" Value="0.1" />
</Trigger.Setters>

funktioniert, aber bei mir das - aus meiner Sicht vollkommen vergleichbare (nur halt, dass TargetName="ImageIcon" ist - nicht (an benannter Stelle ändere ich ja die Hintergrundfarbe des Reiters. Das hatte ich aus Übersichtlichkeitsgründen weggelassen. Das funktioniert ja, allerdings den Opacity-Wert des Images nicht)


</MultiTrigger>
    <MultiTrigger.Conditions>
        <Condition Property="IsMouseOver" Value="True" />
        <Condition Property="IsSelected" Value="False" />
    </MultiTrigger.Conditions>
    <Setter TargetName="ImageIcon" Property="Image.Opacity" Value="1.0" />
</MultiTrigger>

Liegt das Problem darin, dass ich das endgültige Bild im Code zuweise? Aber dort vergebe ich auch den "Namen" "ImageIcon".
OK, intern wird der Name sicherlich abgeändert (weshalb man ja mittels GetTemplateChild() oder Template.FindName() arbeiten soll), aber wie soll ich sonst das Bild im Nachhinein einfügen?

In der Hoffnung, korrekt zu posten,
danke ich nochmals.

Grüße,
R.

06.01.2008 - 23:03 Uhr

Hallo zusammen,

mit XAML habe ich enorme Probleme und die Bücher von Nathan und Frischalowski helfen mir bei folgendem Problem nicht weiter.

Ich habe ein TabItem.Header mit in wesentlichem 2 Komponenten: einem Image und einem entsprechenden Text-Element. Der Image.Opacity-Wert soll 0.5 betragen, solange der Tabreiter nicht ausgewählt ist oder kein MouseOver-Effekt stattfindet. Wenn mit der Maus über den Reiter (nicht nur über das Image)gegangen wird bzw. der Reiter ausgewählt ist, soll der Image.Opacity-Wert "1.0" betragen. Das ganze will ich unter XAML lösen, da dies der Logik (Trennung Design vom Code) von XAML am ehesten entspricht. Allerdings funktioniert mein XAML-Konstrukt nicht. Was mache ich falsch?

Das entsprechende Image wird im Code eingefügt.

Die Transparenz des Images verändert sich beim Mouseover jedenfalls leider nicht.

Für Tipps danke ich bereits im Voraus.
Grüße
R.

<Style x:Key="tabMenuItemStyle" TargetType="{x:Type TabItem}">
    <Style.Resources>
      <Style TargetType="{x:Type Image}">
        <Setter Property="Opacity" Value="0.5"></Setter>        
      </Style>
    </Style.Resources>
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type TabItem}">
          <Grid>
            <Border MaxHeight="25" Name="Border">
              <Grid Name="basegrid">
                <Grid.ColumnDefinitions>
                  <ColumnDefinition/>
                  <ColumnDefinition/>
                </Grid.ColumnDefinitions>
                <Canvas ZIndex="120" Grid.Column="0" Width="32" Height="32" x:Name="baseCanvas">
                  <Image Canvas.Left="0" Canvas.Top="10" x:Name="ImageIcon"></Image>                 
                </Canvas>     
                <ContentPresenter Grid.Column="1" x:Name="ContentSite"
                     ContentSource="Header"/>               
              </Grid>
            </Border>
          </Grid>

          <ControlTemplate.Triggers>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="IsMouseOver" Value="True" />
                <Condition Property="IsSelected" Value="False" />
              </MultiTrigger.Conditions>
              <Setter TargetName="ImageIcon" Property="Image.Opacity" Value="1.0" />
            </MultiTrigger>
           </ControlTemplate.Triggers>
        </ControlTemplate>        
      </Setter.Value>
    </Setter>
  </Style>

Und in einer Klasse erstellte ich mir das jeweilige TabItem mit:

Canvas c = this.Template.FindName("baseCanvas", this) as Canvas;
Img img = this.Template.FindName("ImageIcon", this) as Image;
img = Bilder.liefereBild(_modul);  //statische Klasse; _modul = enum-Wert
img.Name = "ImageIcon";
c.Children.Add(img);