none
Setzen der MenuItem.Icon Property über Styles RRS feed

  • Frage

  • Hey!

     

    Wie kann ich die MenuItem.Icon Property über Styles setzten.

    Dies will ich tun, da ich nicht auf jedem MenuItem die Width und Height der Icons manuell setzen muss.

    Habe schon einige Ansätze versucht, hat aber alles nicht perfekt funktioniert.

       <Menu Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="2">
          <Menu.Resources>
            <Style TargetType="MenuItem">
              <Setter Property="Icon">
                <Setter.Value>
                  <Image Width="16" Height="16" />
                </Setter.Value>
              </Setter>
            </Style>
          </Menu.Resources>
          <MenuItem Header="_File">
            <MenuItem Header="_New" InputGestureText="Strg + N">
              <MenuItem.Icon>
                <Image Width="16" Height="16" Source="images/file_new.png" />
              </MenuItem.Icon>
            </MenuItem>
            <MenuItem Header="Open" InputGestureText....
    

    Mein zweiter Versuch war, dass ich als TargetType MenuItem.Icon angegeben habe, was ebenfalls scheiterte =(.

     

    Hoffe ihr könnt mir weiterhelfen.

    mfg,

    Michael

    Sonntag, 2. Januar 2011 12:55

Antworten

  • Hallo Michael,

    du könntest folgendes machen:

    <Menu>
       <Menu.Resources>
        <Style
         TargetType="{x:Type Image}">
         <Setter
          Property="Height"
          Value="16" />
    
         <Setter
          Property="Width"
          Value="16" />
        </Style>
       </Menu.Resources>
    
       <MenuItem
        Header="Hallo">
        <MenuItem.Icon>
         <Image
          Source="Bitmap1.bmp" />
        </MenuItem.Icon>
       </MenuItem>
      </Menu>
    
     

    Damit definierst du für alle Image Objekte innerhalb von Menu eine Height und Width von 16. Im Image Tag solltest du dann diese Properties nicht mehr setzten, weil dies den Wert den der Style definiert wieder überschreibt.

    Hope this helps

    • Als Antwort markiert poitroae Sonntag, 2. Januar 2011 21:00
    Sonntag, 2. Januar 2011 20:06
  • Yep,

    vielen dank Günter.

     

    Gibt es einen besonderen Grund wieso du

    TargetType="{x:Type Image}"

    anstatt von

    TargetType="Image"

    schreibst?

    • Als Antwort markiert poitroae Montag, 3. Januar 2011 14:26
    Montag, 3. Januar 2011 13:14
  • Hallo Michael,

    alles reine Gewohnheit, ich mach das schon immer so, weil das Property TargetType ist vom Typ Type. Wenn man es ohne der Markupextension schreibt wird WPF "Image" mit einem Converter von String in Type konvertieren. So wie etwas Red, Blue, Green usw. in einen Brush konvertiert wird, wenn man einen Background angibt.

    Hope this helps

    • Als Antwort markiert poitroae Montag, 3. Januar 2011 14:26
    Montag, 3. Januar 2011 13:49

Alle Antworten

  • Hallo Michael,

    du könntest folgendes machen:

    <Menu>
       <Menu.Resources>
        <Style
         TargetType="{x:Type Image}">
         <Setter
          Property="Height"
          Value="16" />
    
         <Setter
          Property="Width"
          Value="16" />
        </Style>
       </Menu.Resources>
    
       <MenuItem
        Header="Hallo">
        <MenuItem.Icon>
         <Image
          Source="Bitmap1.bmp" />
        </MenuItem.Icon>
       </MenuItem>
      </Menu>
    
     

    Damit definierst du für alle Image Objekte innerhalb von Menu eine Height und Width von 16. Im Image Tag solltest du dann diese Properties nicht mehr setzten, weil dies den Wert den der Style definiert wieder überschreibt.

    Hope this helps

    • Als Antwort markiert poitroae Sonntag, 2. Januar 2011 21:00
    Sonntag, 2. Januar 2011 20:06
  • Yep,

    vielen dank Günter.

     

    Gibt es einen besonderen Grund wieso du

    TargetType="{x:Type Image}"

    anstatt von

    TargetType="Image"

    schreibst?

    • Als Antwort markiert poitroae Montag, 3. Januar 2011 14:26
    Montag, 3. Januar 2011 13:14
  • Hallo Michael,

    alles reine Gewohnheit, ich mach das schon immer so, weil das Property TargetType ist vom Typ Type. Wenn man es ohne der Markupextension schreibt wird WPF "Image" mit einem Converter von String in Type konvertieren. So wie etwas Red, Blue, Green usw. in einen Brush konvertiert wird, wenn man einen Background angibt.

    Hope this helps

    • Als Antwort markiert poitroae Montag, 3. Januar 2011 14:26
    Montag, 3. Januar 2011 13:49