2016-07-29 5 views
0

Ich habe ein Problem, das ich nicht verstehe. Mein Visual Studio gibt mir folgende 2 Fehler:Die Eigenschaft "VisualTree" kann nur einmal gesetzt werden

Die Eigenschaft "VisualTree" kann nur einmal festgelegt werden.

Die Eigenschaft 'VisualTree' ist mehr als einmal gesetzt.

Das ist mein XAML:

<ItemsControl x:Name="SettingsListItemControl"> 
    <TextBlock Text="Settings" FontSize="24" /> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel HorizontalAlignment="Left" Height="640" VerticalAlignment="Top" Width="360" /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate x:Name="SettingItemTemplate" x:DataType="vm:SettingItemViewModel"> 
      <TextBlock Text="{x:Bind Title}"/> 
      <ToggleSwitch IsOn="{x:Bind IsActive}"/> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

Ich weiß nicht, warum ich IsActive nicht binden kann, ist es mir ein Fehler gibt hier ... Scheint, wie er auch ein Problem mit Datatemplate hat. Meine Frage scheint ziemlich einfach, ich bin ein Anfänger, wenn es um XAML und DataBinding geht :)

Vielen Dank für Ihre Hilfe!

Antwort

4

In Ihrer ItemTemplate benötigen Sie einen übergeordneten Bereich für den TextBlock/ToggleSwitch, der untergeordnete Elemente enthalten kann und sie in ein StackPanel oder Grid oder ähnliches einbinden kann. Fehler ist weg. :)

Also tauschen Sie es für so etwas aus;

<ItemsControl.ItemTemplate> 
    <DataTemplate x:Name="SettingItemTemplate" x:DataType="vm:SettingItemViewModel"> 
     <StackPanel> 
     <TextBlock Text="{x:Bind Title}"/> 
     <ToggleSwitch IsOn="{x:Bind IsActive}"/> 
     </StackPanel> 
    </DataTemplate> 
</ItemsControl.ItemTemplate> 
+0

vorzugsweise Gitter über Stackpanel, weil Gitter den ganzen Raum füllen und Stackpanel wird Platz der zugrunde liegenden Elemente nehmen. – AVK

Verwandte Themen