我正在使用LINQ语句,从各种表中选择我需要填写一些帖子/帖子后评论样式记录的信息.我得到一个有趣的例外,当我尝试迭代记录集时,该对象必须实现IConvertible.关于它的有趣部分是它似乎只发生在我用来保存数据的匿名类型包含2个以上的泛型集合时.
//select friend timeline posts posts
var pquery = from friend in fquery
join post in db.game_timeline on friend.id equals post.user_id
//join user in db.users on post.friend_id equals user.id into userGroup
//join game in db.games on post.game_id equals game.game_id into gameGroup
select new
{
Friend = friend,
Post = post,
Game = from game in db.games
where game.game_id == post.game_id
select game,
Recipient = from user in db.users
where user.id == post.user_id
select user,
Comments = from comment in db.timeline_comments …Run Code Online (Sandbox Code Playgroud) 我知道在ItemsControl中有关动画项目的类似问题,所以如果已经发布了可接受的答案,那么如果我可以指向正确的方向那将是很好的.
我有一个数据绑定TreeView,其中层次结构只有一层深.它可以有X个根节点和X个子节点.然而,这是深刻的.我面临的问题是如何动画添加/移动/删除数据绑定集合中的项目的最佳方法.
TreeView的ItemContainerStyle设置为自定义ControlTemplate,以提供MouseOver和Selected样式.然后我使用HierarchialDataTemplate进一步布局绑定到它的不同类型的Item.
我发现了许多示例,演示如何动画扩展项目,但在添加/移动/移除项目时动画方面不是很多.这里找到的一个例子 显示了我正在追求的内容,但是包含了许多代码和库引用,换句话说我会考虑无关紧要.我不反对合并我自己的类似功能版本.我只是希望我可以挂钩事件触发器或等效实现相同的目标.
我没有发布任何示例代码,因为我对任何解决方案都非常开放,并且没有编写任何"不起作用"并且需要修复的东西.我或多或少都在寻找从哪里开始的意见.正在应用的动画类型也无关紧要,因为只要我知道如何动画添加/移动/删除动画,那么我可以修改和更改代码以适应我的偏好和整体最终效果.
我目前正在使用一种相当复杂的模板/样式化WPF TreeView控件的方法.它由3个样式组成,一个用于TreeView,一个用于TreeViewItem,一个用于ToggleButton.我让一切都运行得很好,直到我认为在TreeView上公开一些自定义依赖属性是一个很酷的主意.其中一些包括ItemBackgroundBrush,ItemHighlightBrush和ItemSelectedBrush.因此,您可以在使用TreeView标记时定义或更改这些值,而不必不断更改模板(存储在资源字典中).我的所有画笔都影响了ToggleButton,恰当地命名为TreeViewToggle并通过绑定视觉树传递.这样做的原因是,即使鼠标指针位于项目的子项之一上,TreeViewitem的IsMouseOver也是如此,我想这是因为它的ItemsPanel在技术上仍然是项目的一部分.为了超越这个我处理TreeViewToggle的IsMouseOver触发器,所以悬停/选择画笔应用于适当的标题.我想我会发布下面的代码,让你知道我在做什么,但我警告你,它变得相当大的大声笑.一切正常,直到TreeViewToggleStyle的IsMouseOver触发器.我已经跨过Highlight画笔属性,它包含从TreeViewEx ItemHighlightBackground属性传递下来的画笔,但我不能为我的生活让它设置为边框( LayoutRoot)的背景属性......(当前的setter代码只是不同绑定sytaxes的众多尝试中的一种.我已经尝试了很多我在网上看到过的自绑定示例,但它们似乎都不起作用: (再次,抱歉这个巨大的帖子,但我不确定哪些信息是相关的,什么不相关.提前谢谢,Ryan.
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="clr-namespace:WpfApplication2">
<PathGeometry x:Key="TreeArrow" Figures="M0,0 L0,6 L6,0 z"/>
<Style x:Key="TreeViewToggleStyle" TargetType="{x:Type my:TreeViewToggle}">
<Setter Property="Focusable" Value="False"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type my:TreeViewToggle}">
<Border x:Name="LayoutBorder"
CornerRadius="2"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<Grid>
<Path x:Name="Expander" Stroke="#FF989898" Data="{StaticResource TreeArrow}">
<Path.RenderTransform>
<RotateTransform Angle="135" CenterY="6" CenterX="3"/>
</Path.RenderTransform>
</Path>
<ContentPresenter x:Name="PART_Content" Margin="12,0,0,0" />
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="HasItems" Value="False">
<Setter TargetName="Expander" Property="Visibility" Value="Collapsed"/>
<Setter TargetName="PART_Content" Property="Margin" Value="0"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{Binding Path=HighlightBrush, RelativeSource={RelativeSource Mode=Self}}"/>
<Setter Property="BorderBrush" …Run Code Online (Sandbox Code Playgroud)