Autor Beitrag
ebber
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 239
Erhaltene Danke: 1

Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
BeitragVerfasst: So 10.01.10 00:55 
Hallo,

ich habe irgendwie schon wieder ein Problem. Ich möchte beim MouseOver einer Zelle den dazugehörigen Header umfärben.

Meine Idee dazu war folgende:

ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
<Style TargetType="{x:Type DataGridCell}">  
  <Style.Triggers>
    <Trigger Property="IsMouseOver" Value="True">
      <Setter Property="Background" Value="#00000000" />
      <Setter Property="BorderBrush" Value="#FFFFFFFF" />
      <Setter Property="Foreground" Value="#FF000000"/>
    </Trigger>
  </Style.Triggers>
</Style>

Damit verändert sich aufjedenfall schon mal das aussehen der Zelle beim drüberfahren.
Jetzt möchte ich im Prinzip noch die Property Column.HeaderStyle und davon wiederum den Background verändern. (Was in C# ohne Probleme funktioniert)

Normales HeaderStyle:
ausblenden XML-Daten
1:
2:
3:
4:
5:
        <Style TargetType="DataGridColumnHeader">
            <Setter Property="Height" Value="24"/>
            <Setter Property="Background" Value="{StaticResource HeaderBrush}"/>
            <Setter Property="HorizontalContentAlignment" Value="Center"></Setter>
        </Style>


Ich vermute mal das geht? Aber ich habe nicht die geringste Ahnung wie. Ich hoffe mir kann jemand helfen.

MfG
ebber Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 239
Erhaltene Danke: 1

Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
BeitragVerfasst: So 10.01.10 20:45 
Ich hoffe ja mal, dass das Ganze überhaupt funktioniert. Ich weis ja nicht ob ich meine Frage richtig klar gemacht habe, aber ich möchte im oberen Code noch einen Setter einfügen, z.B. so:

ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
<Setter Property="Column.HeaderStyle"
  <Setter.Value>
    <Style TargetType="DataGridColumnHeader">
                <Setter Property="Height" Value="24"/>
                <Setter Property="Background" Value="{StaticResource AndererBrush}"/>
                <Setter Property="HorizontalContentAlignment" Value="Center"/>
            </Style>
  </Setter.Value>
</Setter>


So ähnlich sollte es später dann aussehen. Aber von den 100 verschiedene Arten die ich versucht habe diesen Code zu schreiben hat leider keine funktioniert.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 10.01.10 23:51 
Ich sehe da leider keine einfache Möglichkeit - nur diese hier:
Du führst für DataGridColumnHeader eine neue Dependency Property bool IsMouseOverCell ein, die du dann an den Trigger binden kannst. Gesetzt wird die Property im MouseEnter/Leave jeder Zelle - wenn du den Code in ein Behavior packst, kannst du dieses über CellStyle an alle Zellen heften und dein Code-Behind bleibt sauber.

_________________
>λ=
ebber Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 239
Erhaltene Danke: 1

Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
BeitragVerfasst: Mo 11.01.10 19:05 
Danke mal.

Das sagt mir alles noch ziemlich wenig. Ich habe nur eine ungefähre Vorstellung was das alles ist. Ich werde wohl vorher noch eine weile lesen müssen damit ich das so hinbekomme, was eine weile dauern kann :)

Vielleicht hättest du mir noch ein bisschen Code dazu?

MfG
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 11.01.10 23:18 
Ich bin mir nur nicht sicher, ob dir das viel helfen würde :| . Dependency Properties sind ganz einfach Hexenwerk, bis man mal wirklich durchgestiegen ist, und das schafft man imho nur über die Doku oder gleich ein Buch.

_________________
>λ=