Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: C# und .NET ::  Control mit mehreren Items  
Gehen Sie zu Seite Zurück  1, 2
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
Parker
Unregistrierter




Beitrag Parker Unregistrierter 15:38:55 24.07.2012   Titel:              Zitieren

Ok. Dann halt nochmals konkret gefragt.

Zuerstmal ich würde mal sagen in Davids Lösung sind noch Copy&Paste Fehler.

So wärs richtig:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<Style TargetType="{x:Type Local:CommandBarView}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Local:CommandBarView}">
                <!-- Entweder ein Panel zb StackPanel mit "IsItemsHost" oder den ItemsPresenter -->
                <ItemsPresenter />
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
 
<Style TargetType="{x:Type Local:CommandButtonItem}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Local:CommandButtonItem}">
                <Button>
                    <ContentPresenter />
                </Button>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>


Meine konkrette Frage:

Wie binde ich denn nun meine Property IsActivated an IsEnabled

Wenn ich das wie folgt mache

Code:
...
<Button IsEnabled="{Binding IsActivated}" >
          <ContentPresenter />
</Button>
...


und IsActivated auf False setzte ist der Button immer noch aktiv.
EXDW
Mitglied

Benutzerprofil
Anmeldungsdatum: 09.08.2005
Beiträge: 4732
Beitrag EXDW Mitglied 16:55:13 24.07.2012   Titel:              Zitieren

Hajo, passiert, war hier im Forum getippt ^^
Wie du schon gemerkt hast ist es ein Custom Control, kein UserControl.

Wenn du das IsEnabled per Binding setzt, dann sucht das Control im DataContext des Containers (CommandButtonItem ist der Container wo gebundene Items im DataContext liegen, wenn du es direkt erstellst, ist DataContext leer).

Du musst also im Container ein Property IsActivated machen und das auf den inneren Button durch reichen.

C#:
1
2
3
4
5
6
7
8
9
10
11
<Style TargetType="{x:Type Local:CommandButtonItem}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Local:CommandButtonItem}">
                <Button IsEnabled="{TemplateBinding IsActivated}">
                    <ContentPresenter />
                </Button>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>


C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class CommandButtonItem : ContentControl
{
    static CommandButtonItem()
    {
        DefaultStyleKeyProperty.OverrideMetadata(typeof(CommandButtonItem), new FrameworkPropertyMetadata(typeof(CommandButtonItem)));
    }
 
    public bool IsActivated
    {
        get { return (bool)GetValue(IsActivatedProperty); }
        set { SetValue(IsActivatedProperty, value); }
    }
 
    public static readonly DependencyProperty IsActivatedProperty =
        DependencyProperty.Register("IsActivated", typeof(bool), typeof(ownerclass), new UIPropertyMetadata(0));
}

(propdp ist das Snippet)

Sobald du das hast kannst du es einfach setzen und es geht auf den Inneren Button durch.
Das selbe müsstest du auch noch mit Command, CommandParameter usw machen.

C#:
<Views:CommandBarView>
    <Views:CommandButtonItem Content="1" IsActivated="False" />
    <Views:CommandButtonItem Content="2" />
    <Views:CommandButtonItem Content="3" />
    <Views:CommandButtonItem Content="4" />
</Views:CommandBarView>




PS. du kannst auch einfach IsEnabled benutzen, hat das ContentControl schon und "erbt" sich auch nach unten durch, aber ich gehe davon aus das es nur ein Beispiel ist.
Parker
Unregistrierter




Beitrag Parker Unregistrierter 08:03:18 25.07.2012   Titel:              Zitieren

Danke!

Hatte das Property IsActivated zwar in der Klasse drin aber halt nicht als Dependency Property. Und das TemplateBinding hatte ich auch nicht.
c++.de :: C# und .NET ::  Control mit mehreren Items  
Gehen Sie zu Seite Zurück  1, 2
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.