2016-07-29 1052 views
0

我遇到了一个我不明白的问题。我的Visual Studio给我以下2个错误:属性“VisualTree”只能设置一次

属性“VisualTree”只能设置一次。

属性'VisualTree'被设置多次。

这是我的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> 

我不知道为什么我不能绑定IsActive,它给了我在这里的错误... 好像他也有一个DataTemplate的问题。 我的问题似乎很基本,我是初学者,当谈到XAML和DataBinding :)

感谢您的帮助!

回答

4

在您的ItemTemplate中,您需要一个可以容纳子项的TextBlock/ToggleSwitch的父面板,将它们包装在StackPanel或Grid中或其他东西中。错误消失了。 :)

所以换成这样的东西;

<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

最好在堆叠面板上的网格,因为网格将填满整个空间,并且StackPanel将占用底层物品的空间。 – AVK