[.NET WPF] Design Time Content voor Extended Button

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Beste Tweakers,

Ik ben bezig om een eigen button te maken omdat ik wat extra properties nodig heb.
De button moet een normale waarde opslaan en een speciale waarde.
Ook heeft de button een boolean property die onthoudt of de normale of speciale waarde getoond moet worden.

Echter krijg ik het niet voor elkaar om de normale waarde tijdens design time in de design view te tonen.

Mijn code in XAML is als volgt:
XML:
1
<local:MyButton NormalValue="Aap" SpecialValue="Noot" />

De properties zijn netjes DependencyProperties.

In mijn code kan ik in de constructor wel het volgende doen:
C#:
1
2
3
4
public MyButton()
        {
            if (DesignerProperties.GetIsInDesignMode(this)) this.Content = "Placeholder";
        }

De tekst "Placeholder" komt dan netjes op de button te staan in de deisgn view.
Als ik echter in plaats van de tekst "Placeholder" de variabele NormalValue invul, dan blijft hij gewoon leeg.

Is er een manier om de content die in XAML in de variabele gestopt wordt ook te tonen in de design view?
Zoektochten op het net hebben vooralsnog niet veel opgeleverd.

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 06:48

Sebazzz

3dp

Hoe zit je code van je NormalValue properties in elkaar? Op welk punt wordt bepaald wat de content van de Button wordt?

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
C#:
1
2
3
4
5
6
public static readonly DependencyProperty NormalValueProperty = DependencyProperty.Register("NormalValue", typeof(string), typeof(MyButton));
        public string NormalValue
        {
            get { return (string)GetValue(NormalValueProperty); }
            set { SetValue(NormalValueProperty, value); }
        }


De content wordt gezet als mijn boolean wordt omgezet.

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private bool _showSpecialValue = false;
        public bool ShowSpecialValue
        {
            get { return _showSpecialValue; }
            set
            {
                _showSpecialValue= value;
                if (_showSpecialValue)
                {
                    this.Content = SpecialValue;
                }
                else
                {
                    this.Content = NormalValue;
                }
            }
        }

Acties:
  • 0 Henk 'm!

  • mterwoord
  • Registratie: April 2005
  • Laatst online: 24-04 12:21
Ik zou dit in de styling van je control doen. je kunt in de template de DesignerProperties.IsInDesignTime benaderen en dan een andere property pakken..

Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Kijk, ik kan in de XAML-declaratie altijd nog doen:
XML:
1
<namespace:MyButton NormalValue="1" SpecialValue="1" Content="1" />

Maar dit vind ik iets minder netjes omdat ik dan 2x de NormalValue invoer.
Wat ik wel kan doen is om de Content in eerste instantie weer te mappen naar de NormalValue, maar dan is het nog niet helemaal koosjer.

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 06:48

Sebazzz

3dp

Je kan in de setter van NormalValue eventueel de content setten als DesignerProperties.IsInDesignTime true is.

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]

Pagina: 1