none
Variable im Code per XAML definieren (Benutzersteuerelement) RRS feed

  • Frage

  • Hallo,

    ich habe in Benutzersteuerelement, welches mehrmals verwendet werden soll. In der xaml.cs Datei habe ich eine Variable CategoryID.

     public int CategoryID { get; set; }

    Im Hauptfenster binde ich jetzt das Steuerelement vier Mal ein. Kann ich die oben genannte Variable für jedes Benutzersteuerelement einzeln definieren? Bisher habe ich es so probiert: <local:User_Control_Article CategoryID="1"/>

    Visual Studio schlägt mir die CategoryID auch als Parameter vor, aber meckert dann nachher:

    Das Element "CategoryID" wurde nicht erkannt, oder es kann nicht auf das Element zugegriffen werden.

    Ich komme aber nicht auf den Fehler, vielleicht könnt ihr mir helfen...

    Nachtrag:

    Der Sinn dahinter ist, dass das Benutzersteuerelement jedes Mal andere Daten anzeigen soll. Allerdings braucht es einen Ausgangspunkt (in dem Fall die ID) um die Daten aus einer Datenbank zu holen.

    • Bearbeitet MichaelGER000 Mittwoch, 3. April 2013 13:24 Nachtrag
    Mittwoch, 3. April 2013 13:21

Antworten

  • Hallo, wenn ich ein neues WPF Projekt anlesen, ein Benutzersteuerelement einfüge und nun die Eigenschaft in die cs-Datei einfüge:

        public partial class UserControl1 : UserControl
        {
            public UserControl1()
            {
                InitializeComponent();
            }
    
            public int CategoryID { get; set; }
        }

    Dann kann ich problemlos CategoryID zuweisen:

    <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:local="clr-namespace:WpfApplication102" x:Class="WpfApplication102.MainWindow"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
            <local:UserControl1 HorizontalAlignment="Left" Height="100" Margin="82,56,0,0" VerticalAlignment="Top" Width="100" CategoryID="1"/>
        </Grid>
    </Window>

    Einen Fehler scheint es also nicht zu geben. Versuche mal die Projektmappe zu bereinigen und neu zu erstellen, damit VS alles neu einlesen muss.

    Die Eigenschaft kannst du für jedes Control einzeln festlegen. Wenn du die Eigenschaft Binden willst, dann brauchst du eine DependencyProperty.


    <Code:13/> - Koopakiller [kuːpakɪllɐ]
    Webseite | Code Beispiele | Facebook | Snippets
    Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.
    Einen Konverter zwischen C# und VB.NET Code gibt es hier.

    • Als Antwort markiert MichaelGER000 Mittwoch, 3. April 2013 13:39
    Mittwoch, 3. April 2013 13:27
    Moderator

Alle Antworten

  • Hallo, wenn ich ein neues WPF Projekt anlesen, ein Benutzersteuerelement einfüge und nun die Eigenschaft in die cs-Datei einfüge:

        public partial class UserControl1 : UserControl
        {
            public UserControl1()
            {
                InitializeComponent();
            }
    
            public int CategoryID { get; set; }
        }

    Dann kann ich problemlos CategoryID zuweisen:

    <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:local="clr-namespace:WpfApplication102" x:Class="WpfApplication102.MainWindow"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
            <local:UserControl1 HorizontalAlignment="Left" Height="100" Margin="82,56,0,0" VerticalAlignment="Top" Width="100" CategoryID="1"/>
        </Grid>
    </Window>

    Einen Fehler scheint es also nicht zu geben. Versuche mal die Projektmappe zu bereinigen und neu zu erstellen, damit VS alles neu einlesen muss.

    Die Eigenschaft kannst du für jedes Control einzeln festlegen. Wenn du die Eigenschaft Binden willst, dann brauchst du eine DependencyProperty.


    <Code:13/> - Koopakiller [kuːpakɪllɐ]
    Webseite | Code Beispiele | Facebook | Snippets
    Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.
    Einen Konverter zwischen C# und VB.NET Code gibt es hier.

    • Als Antwort markiert MichaelGER000 Mittwoch, 3. April 2013 13:39
    Mittwoch, 3. April 2013 13:27
    Moderator
  • Hallo,

    tatsache, bereinigen und neu erstellen hat geholfen, jetzt gehts...

    Herzlichen Dank für die schnelle Antwort :)

    Vielleicht weißt du auch gleich noch, warum Visual Studio immer folgenden Fehler bringt:

    Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt

    Eingebunden wird das Steuerelemnt so:

            <DockPanel x:Name="kartons_DockPanel__KT_20" LastChildFill="False" Margin="52,8,8,8" Background="#FF5A5959" d:IsHidden="True">
            <local:User_Control_Article />
            </DockPanel>


    Mittwoch, 3. April 2013 13:37
  • Hi,
    schau Dir mal den Constructor des “User_Control_Article” an. Da wird bestimmt eine Verweisvariable genutzt, die in der Umgebung des Studio nicht initialisiert werden konnte.
     
    --
    Peter Fleischer
    Mittwoch, 3. April 2013 16:57