- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将集合绑定(bind)到 ItemsControl,将 Canvas 作为项目面板,并将每个项目的 Canvas.Left 和 Top 绑定(bind)到项目对象的属性。基本上我正在尝试重新创建我在 this post on my blog 中描述的二维数据绑定(bind)。 ,但这次是在 WinRT 而不是 WPF 中。
由于 ItemsControl 将您的 ItemTemplate 内容包装在另一个 UI 元素(在 WinRT 的情况下为 ContentPresenter)中,并且这些包装器/容器元素直接放置在项目面板内,因此必须在这些容器上设置 Left 和 Top;您不能只在 DataTemplate 中设置它们。在 WPF 中,使用 ItemContainerStyle 中的绑定(bind)很容易做到这一点,例如:
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Canvas.Left" Value="{Binding Path=X}"/>
<Setter Property="Canvas.Top" Value="{Binding Path=Y}"/>
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<!-- This works, so ItemContainerStyle does work in WinRT: -->
<Setter Property="Canvas.Left" Value="200"/>
<!-- But this silently fails, leaves Top as 0, and does not show
any binding errors in the debugger's Output window: -->
<Setter Property="Canvas.Top" Value="{Binding Y}"/>
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl ItemsSource="{Binding Tiles}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="Canvas.Left" Value="{Binding DataContext.Left}"/>
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Rectangle Width="80" Height="80" Fill="Gray"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Binding
上尝试了一些更奇特的选项。 -- 特别是
RelativeSource
.当我使用
RelativeSource TemplatedParent
,无所事事的行为没有改变。但是,当我使用
RelativeSource Self
,我确实得到了一个绑定(bind)错误,说该属性在类型
Setter
上不存在!它正在采取
Self
有点太字面意思了。
TemplateBinding
,但我从来没有真正理解过它的用途,我得到的只是一些难以理解的 COM 错误(欢迎使用 WinRT,这是一个巨大的技术倒退)。
Binding
上是否有其他选项可以用来强制它正常工作?),或者 (b) 以其他方式允许我的
ItemsContainer
中的项目在
Canvas
上任意定位基于对集合项属性的数据绑定(bind)?
最佳答案
Setter 不支持绑定(bind)。我认为 Silverlight 仅在版本 5 中获得了它们。对于解决方法,您可以查看我的旧文章 here .基本上,您定义一个附加的依赖属性,为您设置绑定(bind)。
关于binding - 如何在 WinRT 中的 ItemContainerStyle 中进行绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11857505/
我有一个 ListView,其中行交替颜色:
我创建了用作 ListView 项目模板的样式,其中包含一个 CheckBox 和一个 TextBlock:
我正在 VS 2012 中使用 XAML/WPF。我承认我还不太了解模板和样式。 我在 application.xaml 文件中定义了一个样式,如下所示: 现在我想将此样式应用于我的 L
我创建了以下菜单。现在我想在不同的窗口上使用相同的菜单布局,并考虑将下面的代码转移到 Generic.xaml 并只在需要时引用它。最好的方法是什么,以便实际使用时间尽可能短?
我正在尝试使用以下 xaml 将一个 RibbonGroup 和几个 RibbonButton 绑定(bind)到我的 View 模型: 这给了我以下错
我正在尝试将 ItemTemplate 和 ItemContainerStyle 应用于 ItemsControl:- 然而 ItemContainerStyle 似乎被忽略了(但如果我删除了 It
我尝试使用 TreeView 显示分层数据,并且我想为不同的子类型设置不同的 DataTemplates。 但问题是,我的风格没有得到应用。 也许这是一个非常简单的错误,但我真的没有找到它。
只是一个简短的问题。我可以同时使用 ListView.Resources 和 ListView.ItemContainerStyle 吗?如果我一起使用,似乎只有其中一个在工作..
已经使用方法为TreeViewItems设置了一个fullrowselect这里:Lee Campbell horizontal stretch for treeviewitems 这适用于顶级项目。
例如,有没有办法防止 ItemContainerStyle 覆盖已经设置的样式(通过 )? MenuItem 的样式已在 ResourceDictionary 中定义XAML 文件,在应用程序启动时加
我在从 TabControl 的 ItemContainerStyle 中的默认样式继承时遇到问题。 目的是继承主题风格,只改变一些属性。 如果我编写此 XAML 代码,则使用默认的 TabItem
我正在按照此处绑定(bind) MenuItem 的示例进行操作。到数据对象。
我已经看到了一些其他 Silverlight 'vs' 的问题,但找不到这个特定比赛的任何问题。 我正在尝试定义我的对象绑定(bind)到 ListBox 的方式将显示。我定义了 DataTempla
以下类似于我要完成的工作。但是,我得到了错误 Invalid PropertyDescriptor value. 在模板上 Setter .我怀疑这是因为我没有指定 TargetType对于Style
我有以下样式和列表框:
我有两个列表框,默认的和自定义的。一个正确使用 DataTemplateSelector 而另一个只使用默认的 DataTemplates 从不调用选择器; //shows correctly //
我的窗口的 DataContext 是一个 IDictionary>。 任何人都可以向我解释为什么这工作正常: 但这不是:
我正在尝试将集合绑定(bind)到 ItemsControl,将 Canvas 作为项目面板,并将每个项目的 Canvas.Left 和 Top 绑定(bind)到项目对象的属性。基本上我正在尝试重新
我正在尝试将集合绑定(bind)到 ItemsControl,将 Canvas 作为项目面板,并将每个项目的 Canvas.Left 和 Top 绑定(bind)到项目对象的属性。基本上我正在尝试重新
我有一个 UserControl ( FahrtControl.xaml ) 与 ListView .这个UserControl绑定(bind)到 ItemsControl在我的MainWindow.
我是一名优秀的程序员,十分优秀!