| 

.NET C# Java Javascript Exception

3
Hallo zusammen,

ich habe einen XAML-Code in WPF der so aussieht:
<ItemsControl ItemsSource="{Binding TVCards}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<controls:TwinStackPanel/>
<!--<toolkit:DockPanel />-->
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>

<ItemsControl.ItemTemplate>
<DataTemplate>
<!--
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=Werkzeugart}" Value="2">
<Setter Property="controls:TwinStackPanel.Dock" Value="Bottom" />
</DataTrigger>
</DataTemplate.Triggers>
-->

<-- Die beiden Properties sind nur für Test gesetzt -->
<views:TVCardView toolkit:DockPanel.Dock="Bottom"
controls:TwinStackPanel.Dock="Bottom"/>

</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>


Zum einen möchte ich gerne den ausgeblendeten Trigger nach Silverlight umsetzen, zu zweiten bekomme ich die Items in Silverlight überhaupt nicht nach unten gesetzt. In WPF mit dem Trigger werden die Items richtig geordnet.
Das TwinStackPanel ist ähnlich dem Dockpanel und ordnet die Items oben und unten an.

Mit besten Dank im voraus
Viele Grüße
Achim
05.09.2011
Platon 86 1 3
1 Antwort
2
Hallo,

XAML habe ich es jetzt in Silverlight über einen Converter gelöst
<DataTemplate>
<!-- NUR WPF
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=Werkzeugart}" Value="2">
<Setter Property="controls:TwinStackPanel.Dock" Value="Bottom" />
</DataTrigger>
</DataTemplate.Triggers>
-->

<views:TVCardView
controls:TwinStackPanel.Dock="{Binding AuftragPosition,Converter={StaticResource m_AuftragPositionToDockingConverter}}"
/>
</DataTemplate>


Ich musste allerdings in meinem Panel noch eine Änderung einfügen, da hier bei Silverlight
der ContentPresenter als Child übergeben wurde

ArrangeOverride(System.Windows.Size finalSize)
{
Point locationTop = new Point(0, 0);
Point locationBottom = new Point(0, finalSize.Height);

foreach (UIElement child in getChildrenList())
{
Size childSize = new Size(finalSize.Width, this.ItemsHeight);

TwinStackPanel.Dock dock =
(TwinStackPanel.Dock)child.GetValue(TwinStackPanel.DockProperty);
#if SILVERLIGHT
if(VisualTreeHelper.GetChildrenCount(child)>0)
{
dock = (TwinStackPanel.Dock)VisualTreeHelper.GetChild(child, 0).GetValue(TwinStackPanel.DockProperty);
}
#endif
if (dock == TwinStackPanel.Dock.Top)
{
...


Schönen Tag noch

Achim

Edit: Code-Tags eingefügt
06.09.2011
Platon 86 1 3
Danke, dass Du die schlussendlich selbst gefundene Lösung mit uns teilst :-)
ffordermaier 06.09.2011

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH