CLR-Namespace: Klasse wird nicht gefunden

  • WPF

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von LuaX.

    CLR-Namespace: Klasse wird nicht gefunden

    Moin moin.
    Ich habe mir im XAML-Code einer Page mal einen ObjectDataProvider geangelt. In diesem muss ich den ObjectType angeben. Das habe ich gemacht: ObjectType="{x:Type tasking:ATask}.
    Nun wird dies aber blau markiert und bemängelt mit: Der Name "ATask" ist im Namespace "clr-namespace: ...;assembly:PacksPlay Shared" nich vorhanden.
    Ich bin mir aber 10000000% sicher das dieser da ist. Was mache ich falsch?

    Grüße
    Falsdudichfragstwarumdudaslesenkannstobwohlalleszusammenstehtdannwirstdumerkendasdu
    eingehirnbesizt.
    Achja, eine MsgBox macht man mit MessageBox.show(....) und nicht MsgBox(....)
    Hallo

    Was ist das für eine Klasse? Ist die Assembly korrekt eingebunden?
    Normalerweise hast du auch Intellisense beim Tippem solbald du tasking eintippst.
    In den Namespaces ist tasking korrekt angegeben?

    Zeig mal deine Klasse (müssen jetzt nicht alle Properties zu sehen sein) und deinen XAML Code.

    PS: Oft muss man einfach nur 1x kompilieren damit er sie kennt (ohne dem bemelgelten Code, also raus -> komilieren -> wieder rein)

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.
    Ok, also mal den bloßen XAML-Code der Page: (Ich habe tasking testweise in shared umbenannt.

    Spoiler anzeigen

    HTML-Quellcode

    1. <Page x:Class="packsunited.packsplay.gamemanager.Pages.PageAccount"
    2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    5. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    6. xmlns:mahapps="http://metro.mahapps.com/winfx/xaml/controls"
    7. xmlns:my="clr-namespace:packsunited.packsplay.gamemanager.Pages"
    8. xmlns:shared="clr-namespace:packsunited.packsplay.gamemanager.shared;assembly=PacksPlayShared"
    9. mc:Ignorable="d" Loaded="PageLoaded" Unloaded="PageUnloaded"
    10. d:DesignHeight="500" d:DesignWidth="600"
    11. Title="PageAccount">
    12. <Grid>
    13. <Image x:Name="AccountAvatarBackground" VerticalAlignment="Top" Height="240" Stretch="UniformToFill" Source="{DynamicResource LocalUserAvatar}" >
    14. <Image.Effect>
    15. <BlurEffect Radius="20"/>
    16. </Image.Effect>
    17. </Image>
    18. <Border x:Name="AccountAvatar" BorderBrush="Black" BorderThickness="0" HorizontalAlignment="Center" Height="200" Margin="0,20,0,0" VerticalAlignment="Top" Width="200" CornerRadius="100" MouseEnter="AvatarMouseHoverStart" MouseLeave="AvatarMouseHoverEnd" MouseDown="AvatarMouseClick" >
    19. <Border.Background>
    20. <ImageBrush ImageSource="{DynamicResource LocalUserAvatar}" Stretch="Uniform"/>
    21. </Border.Background>
    22. </Border>
    23. <Border x:Name="AccountAvatarHover" BorderBrush="Black" BorderThickness="0" HorizontalAlignment="Center" Height="200" Margin="0,20,0,0" VerticalAlignment="Top" Width="200" CornerRadius="100" IsHitTestVisible="False" Opacity="0">
    24. <Border.Background>
    25. <ImageBrush ImageSource="/PacksPlay;component/Assets/Images/change-avatar.png" Stretch="Uniform"/>
    26. </Border.Background>
    27. </Border>
    28. <mahapps:ProgressRing x:Name="AccountAvatarChangeRing" Width="200" Height="200" VerticalAlignment="Top" Margin="0,20,0,0" IsHitTestVisible="False" Visibility="Hidden"/>
    29. <Label x:Name="AccountName" Content="{DynamicResource LocalUserName}" HorizontalAlignment="Center" Margin="0,240,0,0" VerticalAlignment="Top" FontSize="24"/>
    30. <Label x:Name="AccountAlliance" Content="{DynamicResource LocalUserAlliance}" HorizontalAlignment="Center" Margin="0,270,0,0" VerticalAlignment="Top" FontSize="20"/>
    31. <ListBox x:Name="TaskBox" Height="165" Margin="20,310,20,0" VerticalAlignment="Top">
    32. <ListBox.ItemTemplate>
    33. <ItemContainerTemplate>
    34. <Grid VerticalAlignment="Top" Height="100">
    35. <Label HorizontalAlignment="Left" VerticalAlignment="Top" Margin="90,10,0,0" FontSize="20">
    36. <ObjectDataProvider ObjectType="{x:Type shared:ATask}" MethodName="GetTaskName" />
    37. </Label>
    38. <Image Width="80" Height="80" HorizontalAlignment="Left" VerticalAlignment="Center" Source="{Binding TaskIcon}"/>
    39. <ProgressBar Value="{Binding TaskProcess}" VerticalAlignment="Bottom" IsIndeterminate="False"></ProgressBar>
    40. </Grid>
    41. </ItemContainerTemplate>
    42. </ListBox.ItemTemplate>
    43. </ListBox>
    44. <Button Content="ADD TASK" HorizontalAlignment="Left" Margin="490,264,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click" Visibility="Hidden"/>
    45. </Grid>
    46. </Page>


    und natürlich die Klasse

    Spoiler anzeigen

    C#-Quellcode

    1. namespace packsunited.packsplay.gamemanager.shared
    2. {
    3. /// <summary>
    4. /// An async Task that the TaskService can run.
    5. /// </summary>
    6. public abstract class ATask
    7. {
    8. /* Internal */
    9. /// <summary>
    10. /// The task icon displayed on the tasks list.
    11. /// </summary>
    12. protected internal ImageSource TaskIcon { get; set; }
    13. /// <summary>
    14. /// The task name displayed on the tasks list.
    15. /// </summary>
    16. protected internal String TaskName { get; set; } = "Invalid Task";
    17. /// <summary>
    18. /// The task description displayed on the tasks list.
    19. /// </summary>
    20. protected internal String TaskDescription { get; set; } = "This task is not valid. ";
    21. /// <summary>
    22. /// The progress displayed on the tasks list. This goes from 0 to 100
    23. /// </summary>
    24. protected internal byte TaskProgress { get; set; }
    25. /// <summary>
    26. /// When set to true, the progress bar in the task list will be Marquee.
    27. /// </summary>
    28. protected internal bool TaskProgressMarquee { get; set; }
    29. protected internal abstract void StartTaskAsync();
    30. protected internal abstract void StopTaskAsync();
    31. protected internal abstract void KillTaskAsync();
    32. /* Public */
    33. public ImageSource GetTaskIcon()
    34. {
    35. return TaskIcon;
    36. }
    37. public String GetTaskName()
    38. {
    39. return TaskName;
    40. }
    41. public String GetTaskDescription()
    42. {
    43. return TaskDescription;
    44. }
    45. public bool GetProgressIsMarquee()
    46. {
    47. return TaskProgressMarquee;
    48. }
    49. /// <summary>
    50. /// Returns the Progress of this Task (0-100);
    51. /// </summary>
    52. public int GetProgress()
    53. { return TaskProgress; }
    54. public delegate void TaskFinishedDelegate(ATask sender);
    55. /// <summary>
    56. /// Will get fired if the task finished
    57. /// </summary>
    58. public event TaskFinishedDelegate OnTaskFinished;
    59. }
    60. }

    Falsdudichfragstwarumdudaslesenkannstobwohlalleszusammenstehtdannwirstdumerkendasdu
    eingehirnbesizt.
    Achja, eine MsgBox macht man mit MessageBox.show(....) und nicht MsgBox(....)

    LuaX schrieb:

    public abstract class ATask

    Da haben wir den Fehler denke ich. Meines wissens nach benötigt der DataProvider eine Klasse mit einem entweder parameterlosen Konstruktor oder du gibst parameter mit an mit <ObjectDataProvider.ConstructorParameters>.
    Mit einer Abstract class oder in Vb.Net einer MustInherit Class glaube ich nicht das man den DataProvider nutzen kann. Aber ich muss ehrlich sagen das ich mir nicht sicher bin.
    Was du machen kannst wäre eine Wrapperklasse drumrum.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.
    Ja, es lag wirklich an abstract. Ich habe mir jetzt einen Wrapper geschrieben über den ich dann ein Binding machen kann.

    LG
    Falsdudichfragstwarumdudaslesenkannstobwohlalleszusammenstehtdannwirstdumerkendasdu
    eingehirnbesizt.
    Achja, eine MsgBox macht man mit MessageBox.show(....) und nicht MsgBox(....)