我已经看过其他一些Silverlight'vs'问题了,但找不到任何特别的比赛.
我正在尝试定义我的对象绑定到的方式ListBox将显示.我已经定义了一个DataTemplate,但我真的不确定它应该在哪里结束并且ItemContainerStyle应该开始.
问题1:
这ItemContainerStyle只是一个包装器,DataTemplate以便可以将一个共同的项目样式应用于不同的数据布局吗?
问题1a:如果是这样,如果不需要通用的项目样式,ItemContainerStyle甚至是必要的还是可以在DataTemplate?中定义所有的布局和样式?
问题1b:如果没有,那么它是什么?
在ListBox目前这样的:
<ListBox Margin="40,118,41,61" ItemTemplate="{StaticResource TaskDataTemplate}"/>
Run Code Online (Sandbox Code Playgroud)
我的XAML DataTemplate是这样的:
<DataTemplate x:Key="TaskDataTemplate">
<Grid d:DesignHeight="95" Height="150">
<StackPanel Margin="11,8,-10,68" Orientation="Horizontal" d:LayoutOverrides="Width">
<TextBlock x:Name="TaskLabel" Margin="0,0,0,8" Style="{StaticResource TitleTextSmall}" TextWrapping="Wrap" Text="Task" VerticalAlignment="Stretch" d:LayoutOverrides="Height"/>
<TextBlock x:Name="TaskID" HorizontalAlignment="Right" Margin="10,0,0,0" Style="{StaticResource TitleTextSmall}" TextWrapping="Wrap" Text="TaskID" VerticalAlignment="Stretch" d:LayoutOverrides="Height"/>
<TextBlock x:Name="ChangeList" Style="{StaticResource NormalText}" TextWrapping="Wrap" Text="Changes..." Margin="30,2,0,0"/>
</StackPanel>
<ComboBox x:Name="TaskType" Style="{StaticResource TaskComboBox}" Height="29" VerticalAlignment="Top" Margin="131,30,16,0" d:LayoutOverrides="VerticalAlignment"/>
<TextBlock x:Name="TaskTypeLabel" Margin="12,39,0,0" …Run Code Online (Sandbox Code Playgroud) 我想将图标绑定到动态创建这些项目的 MenuItem 控件。我试图将 x:Shared 属性设置为 False 但始终只有最后一项有图标。
这是我的 MenuItems ItemContainerStyle 代码样式:
<Window.Resources>
<Style TargetType="{x:Type MenuItem}" x:Key="MenuItemStyle" x:Shared="False">
<Setter Property="Icon">
<Setter.Value>
<Image Source="{Binding IconSource}" />
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)
和 MenuItem 定义:
<MenuItem Header="Workspaces" ItemsSource="{Binding WorkspaceItems}" Icon="{StaticResource BranchIcon}" ItemContainerStyle="{StaticResource MenuItemStyle}" />
Run Code Online (Sandbox Code Playgroud)
我已经尝试在 Image 控件上设置此 Shared 属性,但没有运气。
有什么建议吗?