Laden...
A
amu
myCSharp.de - Member
8
Themen
15
Beiträge
Letzte Aktivität
vor 8 Monaten
Dabei seit
01.12.2023
Erstellt vor 8 Monaten

Guten Morgen, ich habe eine Vorlage für Bootstrap Cards geschaffen. Nun wäre meine frage, wie kann ich von den einzelnen Cards dieser Vorlage Styles mitgeben. z.b. wie breit die Card sein soll. denn wenn ich Styles mitgeben will kommt dieser Fehler: ... does not have a property matching the name 'style'.

public abstract class CardBase<TViewModel> : BaseComponent<TViewModel> where TViewModel : ICardViewModel
{
    [Inject]
    public required ICardService CardService { get; set; }
    [Parameter]
    public required RenderFragment<TViewModel> HeaderContent { get; set; }
    [Parameter]
    public required RenderFragment<TViewModel> BodyContent { get; set; }
    [Parameter]
    public RenderFragment<TViewModel>? FooterContent { get; set; }

    private CardDefinition? _cardDefinition;

    protected override void OnInitialized()
    {
        base.OnInitialized();
        _cardDefinition = new CardDefinition(ViewModel);
        CardService.Register(_cardDefinition);
    }

    public RenderFragment GetHeaderContent()
        => HeaderContent.Invoke(ViewModel);

    public RenderFragment GetBodyContent()
        => BodyContent.Invoke(ViewModel);

    public RenderFragment? GetFooterContent()
    {
        if (FooterContent != null)
            return FooterContent.Invoke(ViewModel);

        return null;
    }
}


<div class="card ">
   <div class="card-header">
       @GetHeaderContent()
   </div>
   <div class="card-body ">
       @GetBodyContent()
   </div>
   @if(FooterContent != null)
   {
       <div class="card-footer">
           @GetFooterContent()
       </div>
   }
</div>
<Card TViewModel="IUserInformationCardViewModel" style="width:200px">
       <HeaderContent>
           <div>
               <h5 class="">Urlaubsplanung</h5>
           </div>
       </HeaderContent> 
</Card>
Erstellt vor 11 Monaten

Guten Tag,

ich habe auf meiner seiter eingebaut das das navbar erst anzeigt, nachdem sich der User angemeldet hat. Aber dies geschieht nicht, deshalb dachte ich man musste OnPropertyChanged nutzen oder ähnliches hätte jemand tipps wie das geht?

Code

<div class="page">
     <AuthenticateComponent>
         <Authenticated>
            <div class="sidebar">
                <NavMenu />
            </div>


         </Authenticated>
      </AuthenticateComponent>
</div>
Erstellt vor einem Jahr

Guten Morgen,

ich habe eine Tabelle erstellt. Nun möchte ich erreichen wenn ich zwei verschiedene spalten drücke, das zwischen den beiden ein Border entsteht. Z.B. wie bei Excel. Nur weiß ich nicht, wenn ich auf eine Spalte geklickt habe, wie ich herausfinde welche Spalte gedrückt wurde.

Erstellt vor einem Jahr

Guten Morgen,

ich versuche momentan ein Kalender auf der Webseite zu visualisieren. Der Kalender wird auch soweit angezeigt, aber nun möchte ich, das nicht alles aufeinmal angezeigt wird, sondern das ich durch Tab klicks zum nächsten Monat komme. ich hätte auch ne Idee. nach jeden Monats ende ein neuen DIV erstellen der dann in den neuen Tab erscheinen soll,  aber leider kann man keine divs in   <tr> setzen im bild habe ich es noch mal Visualisiert.

Code.

<table class="table">
   <tbody>
       <tr>
           <td> </td>
               @for (int month = 1; month <= 12; month++)
               {
                   for (int day = 1; day <= DateTime.DaysInMonth(DateTime.Now.Year, month); day++)
                   {
                       DateTime curDay = new DateTime(2024, month, day);
                       <td style="text-align:center">@curDay.Day</td>
                   }
               } 
       </tr>
       @foreach (var user in ViewModel.GetAllUser())
       {
           <tr>
               <td>@user.Name</td>
               @foreach (var day in ViewModel.Days)
               {
                   if (day.IsWeekend)
                   {
                       <td class="border-1" style="background:#B10000"></td>
                   }
                   else
                   {
                       switch (day.DateType)
                       {
                           case Services.Database.Enums.CalenderDayTypeEnum.SchoolHoliday:
                               <td class="border-1" style="background:#C9CCD1"></td>
                               break;
                           case Services.Database.Enums.CalenderDayTypeEnum.Holiday:
                               <td class="border-1" style="background:#E8494C"></td>
                               break;
                           default:
                               <td class="border-1"></td>
                               break;
                       }
                   }
               }
           </tr>
       }
   </tbody>
</table>
Erstellt vor einem Jahr

ok denke jetzt sollte es gehen thx

Erstellt vor einem Jahr

dort ist auch null bei Parent 😃

hab es jetzt mal so gemacht, bis ich dann zum gesuchten Parent komme.

 var parent = VisualTreeHelper.GetParent(obj) as UIElement;
 var parent2 = VisualTreeHelper.GetParent(parent) as UIElement;
 var parent3 = VisualTreeHelper.GetParent(parent2) as UIElement;
 var parent4 = VisualTreeHelper.GetParent(parent3) as UIElement;
 var parent5 = VisualTreeHelper.GetParent(parent4) as UIElement;
 var parent6 = VisualTreeHelper.GetParent(parent5) as UIElement;

 ((StackPanel)parent6).Children.Remove(obj);

aber das remove funktioniert nicht. Es kommt keine Fehlermeldung, aber es entfernt es nicht.

Erstellt vor einem Jahr

liefert leider auch null oder ich hab einen Logikfehler

Erstellt vor einem Jahr

ja stimmt obj.parent ist null. Hättest du eventuell eine andre Idee wie ich den Border dann von jetzigen Template löschen kann und im anderen speichern kann?

Erstellt vor einem Jahr

ich versuche das ich ein Border ziehen kann von einen Template ins andere. Wenn ich es ohne Template mache funktioniert es.

private void TextBox_MouseMove(object sender, MouseEventArgs e)
{
    var canvas = sender as Border;

    base.OnMouseMove(e);
    if (e.LeftButton == MouseButtonState.Pressed)
    {
        DragDrop.DoDragDrop(this, canvas, DragDropEffects.Move);
    }
}

private void Stackpanel_Drop(object sender, DragEventArgs e)
{
    var obj = e.Data.GetData(typeof(Border)) as Border;

    ((StackPanel)(obj.Parent)).Children.Remove(obj);

    ((StackPanel)sender).Children.Add(obj);
    ((StackPanel)sender).UpdateLayout();
}
<StackPanel Grid.Column="2" Grid.Row="1" HorizontalAlignment="Center" Background="Transparent" AllowDrop="True" Drop="Stackpanel_Drop" >
    <StackPanel.Resources>
        <Style TargetType="{x:Type Border}">
            <Setter Property="Margin" Value="0,10,0,0"/>
        </Style>
    </StackPanel.Resources>
    <ItemsControl ItemsSource="{Binding FinishedTasksList}">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel Orientation="Horizontal" />
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Border Background="LightGray" Height="85" Width="250" MouseMove="TextBox_MouseMove">
                    <TextBlock Text="{Binding Details}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                </Border>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</StackPanel>

Von diesem Xaml-Code gibt es 2 Weitere die Ähnlich sind

wenn ich es nur so z.b. 3 Borders anlege und sie verschiebe funktioniert es

denke bei StackPanel_Drop muss was angepasst werden. Einiges Probiert, aber keine Lösung gefunden

Erstellt vor einem Jahr

Bin noch neu mit WPF. was vom Code würdest du in den ViewModel Packen?

10 von 15 Beiträgen