有两个循环的树枝(非symfony)(Twig with two loops (non-symfony))
这里仍然是新手,我对一个嵌套的foreach以及如何将它实现到
twig
中感到困惑。 我在php中获得了时区的示例代码:foreach($timezones as $region => $list) { print '<optgroup label="' . $region . '">' . "\n"; foreach($list as $timezone => $name) { print '<option name="' . $timezone . '">' . $name . '</option>' . "\n"; } print '<optgroup>' . "\n"; }
我知道如何将for标签用于一个简单的数组,但这就是我所知道的。
提前致谢!
Still new to
twig
here and i'm kind of confused about a nested foreach and how to implement it intotwig
. I got an example code for timezones in php here:foreach($timezones as $region => $list) { print '<optgroup label="' . $region . '">' . "\n"; foreach($list as $timezone => $name) { print '<option name="' . $timezone . '">' . $name . '</option>' . "\n"; } print '<optgroup>' . "\n"; }
I know how to use the for tag for a simple array but that's all i know.
Thanks in advance!
原文:
最满意答案
你可以用触发器来做到这一点:
<ComboBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding Piece.NoPiece}" Width="50" x:Name="Column1" /> <TextBlock Text="{Binding Piece.Description}" Width="170" /> <TextBlock Text="{Binding Piece.Categorie.NomCategorie}" x:Name="Column3" /> </StackPanel> <DataTemplate.Triggers> <!-- This trigger fires for the selected item in the drop-down list --> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ComboBoxItem}, Path=IsSelected}" Value="True"> <Setter TargetName="Column1" Property="Visibility" Value="Hidden" /> <Setter TargetName="Column3" Property="Visibility" Value="Hidden" /> </DataTrigger> <!-- This trigger fires for the selected item (ie the one that's visible when the popup is closed --> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ComboBoxItem}}" Value="{x:Null}"> <Setter TargetName="Column1" Property="Visibility" Value="Hidden" /> <Setter TargetName="Column3" Property="Visibility" Value="Hidden" /> </DataTrigger> </DataTemplate.Triggers> </DataTemplate> </ComboBox.ItemTemplate>
编辑
我更新了XAML以展示如何在弹出窗口被折叠时将替代格式应用于所选项目(我不确定该区域被称为什么)。
诀窍是下拉区域中的项目包含在逻辑树中的
ComboBoxItem
对象中。RelativeSource
绑定查找该类型的对象作为祖先。
- 如果它发现它,它假定该项目在树中(并检查它是否被选中)
- 如果找不到(
null
)则它假定该项目位于组合框区域而不是弹出窗口如果你以某种方式在另一个组合框的项模板中有一个组合框,这将会崩溃。 我不认为我想使用那个UI!
You can do it with triggers:
<ComboBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding Piece.NoPiece}" Width="50" x:Name="Column1" /> <TextBlock Text="{Binding Piece.Description}" Width="170" /> <TextBlock Text="{Binding Piece.Categorie.NomCategorie}" x:Name="Column3" /> </StackPanel> <DataTemplate.Triggers> <!-- This trigger fires for the selected item in the drop-down list --> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ComboBoxItem}, Path=IsSelected}" Value="True"> <Setter TargetName="Column1" Property="Visibility" Value="Hidden" /> <Setter TargetName="Column3" Property="Visibility" Value="Hidden" /> </DataTrigger> <!-- This trigger fires for the selected item (ie the one that's visible when the popup is closed --> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ComboBoxItem}}" Value="{x:Null}"> <Setter TargetName="Column1" Property="Visibility" Value="Hidden" /> <Setter TargetName="Column3" Property="Visibility" Value="Hidden" /> </DataTrigger> </DataTemplate.Triggers> </DataTemplate> </ComboBox.ItemTemplate>
EDIT
I've updated the XAML to show how to apply the alternative formatting to the selected item when the popup is collapsed (I'm not sure what that area is called.)
The trick is that items in the drop-down area are contained within
ComboBoxItem
objects in the logical tree. TheRelativeSource
binding looks for an object of that type as an ancestor.
- If it finds it, it assumes that the item is in the tree (and checks whether it's selected)
- If it's not found (
null
) then it assumes the item is in the combo box area rather than the popupThis would fall apart if you, somehow, had a combo box within the item template of another combo box. I don't think I'd like to use that UI though!
相关问答
更多-
我好像已经弄清楚了。 SelectedItem的默认值是Gender.Male ,与Gender.Male的默认值person.Gender 。 由于SelectedItem已经等于Gender.Male ,因此它无法直观地更新控件并将其留空。 当我将SelectedItem设置为null ,然后将其设置为初始值时,它突然起作用。 I seemed to have figured it out. The default value for SelectedItem is Gender.Male, the s ...
-
在这种情况下, SelectedValue将返回一个ComboBoxItem 。 你看到的是调用ToString的结果。 如果您只想要ComboBoxItem的内容 ,则需要访问它: var item = (ComboBoxItem)comboBox.SelectedValue; var content = (string)item.Content; 或者,设置SelectedValuePath="Content" (在XAML中),然后SelectedValue将只返回内容字符串。 SelectedVa ...
-
您需要从SelectedItem获取ComboBoxItem并将Content (在您的情况下)转换为string : private void comboBox_SelectionChanged_1(object sender, System.Windows.Controls.SelectionChangedEventArgs e) { string content = ((ComboBoxItem)comboBox.SelectedItem).Content as string; ...
-
ComboBox选择了文本或项目(ComboBox selected text or item)[2022-06-16]
您的绑定代码不正确。 删除周围的foreach ,应解决问题。 Your binding code is incorrect. Removing the foreach around it, should fix the issue. -
我只是尝试了你的代码,它工作正常。 每当我更改选择时,所选文本都将写入System.out 。 我唯一改变的是检查myBoxName.getSelectedItem().toString() != null ,我检查myBoxName.getSelectedItem() != null 。 这不应该与你的问题有关。 public class ComboBoxTest { private JComboBox comboBox = new JComboBox( new Default ...
-
首先,您需要2个DataTemplates,1个用于所选项目,1个用于下拉项目。 选择我们将留空,因为这是您的要求。 下拉项DataTemplate将具有您想要的确切DataTemplate。 选择项目后,DataTrigger会将其模板更改为SelectedTemplate,如下所示:您必须使用SelectedValue。 在WPF ComboBox中,有多种方法可以实现相同的功能。 因此,以编程方式选择项目的一种语法将不起作用。 有多种方法可以向ComboBox添加项目。 您可以声明性地或在代码中设置ItemsSource。 您可以添加ComboBoxItems等。请参阅属性窗口中的Items属性以查看可用的各种项类型。 如果您正在使用带有字符串值的ItemsSource,那么您需要以下语法: cmb1.SelectedValue = "Name1" 如果您直接添加您需要设置ValueMember属性,以便ComboBox知道在使用SelectedValue时要处理的属性。 默认情况下, ValueMember将为空。 因此,当您设置SelectedValue , ComboBox不知道您要设置什么。 this.comboBox1.ValueMember = "Key"; 通常,您还可以设置DisplayMember属性: this.comboBox1.DisplayMember = "Value"; 如果你没有设置它,它只会调用对象上的ToString()并显示 ...你可以用触发器来做到这一点:你可以添加SelectionChangedListener吗? 我不熟悉GWT,但是请相信这一点 ,希望它能进一步帮助你。 Can you add a SelectionChangedListener? Im not familiar with GWT but take alook at this, hope it helps you further.
相关文章
更多- Symfony2网站开发
- jquery问题两个
- 请教两个JAVA问题
- 请问Apache可以配置两个域名对应两个tomcat服务吗
- struts2中json的两个问题
- 使用TabPanel时,如果两个页面存在相同的id。
- 关于两个集合有相同内容快速查找的方法
- hibernate有两个一对多的Set时怎么写hbm
- Nutch两个分支版本区别
- 如何向一个页面中的两个iframe传值
最新问答
更多- 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
- 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
- OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
- 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
- codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
- 在计算机拍照在哪里进入
- 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
- No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
- 单页应用程序:页面重新加载(Single Page Application: page reload)
- 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
- System.StackOverflow错误(System.StackOverflow error)
- KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
- 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
- android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
- TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
- 企业安全培训的各项内容
- 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
- C#类名中允许哪些字符?(What characters are allowed in C# class name?)
- NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
- 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
- 将多个行和可变行移动到列(moving multiple and variable rows to columns)
- 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
- 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
- Angular $资源不会改变方法(Angular $resource doesn't change method)
- 在Angular 5中不是一个函数(is not a function in Angular 5)
- 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
- 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
- 常见的python rpc和cli接口(Common python rpc and cli interface)
- Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
- 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)