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>
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>
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.
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>
ok denke jetzt sollte es gehen thx
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.
liefert leider auch null oder ich hab einen Logikfehler
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?
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
Bin noch neu mit WPF. was vom Code würdest du in den ViewModel Packen?