问题标签 [listboxitem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1183 浏览

silverlight - Silverlight relativebinding ItemTemplate ListboxItem - 列表框

我以编程方式创建了一个类(我称之为 ViewGrid),以便我将它的一个实例用作我的 ListBox 控件的 ItemTemplate;当然,这是我的 listboxitem 数据模板....

此外,在我的 ViewGrid 类中,我有一个名为IsChecked的依赖项属性,我希望它与 ListBoxItem 的 IsSelected 属性保持同步。我注意到在 SL 中没有像 WPF 中那样对绑定的 relativesource-findancestor-ancestortype 支持,但我仍然需要找到一种方法来使我的IsChecked属性与我的 ListBox 控件内部生成的 ListBoxItem 的 IsSelected 属性保持同步。你能帮我吗?

0 投票
3 回答
5744 浏览

wpf - 如果 ItemTemplate 中的 TextBox 获得焦点,则选择 ListBoxItem

我在DataTemplate一个ListBox类中添加了一个将我的集合绑定到:

这正是我想要它做的。虽然当我点击 时TextBoxListBox并不会自动将关联设置ListItemSelected。我可以在代码中做到这一点,但我更愿意将它用作一个组件(那就不足为奇了)。

关于如何实现这一目标的任何想法?


这似乎不起作用,它不会让我点击任何东西。我是不是错过了什么。这是我的新 XAML。

我认为点击两次是很好的功能。

0 投票
3 回答
1769 浏览

silverlight - 如何使用 VisualStateManager 更改 ListBoxItem 的文本颜色(前景)?

这是交易。我可以创建一个 ListBox 并为其设置样式。我可以编辑模板的副本,使状态在 Expression Blend 3 中可用。我可以更改状态,以便在选择时修改行项目的背景颜色。但是由于 ContentPresenter,我无法更改文本的前景色!有没有人有任何示例 XAML 来展示如何完成这个看似简单的任务?

答案似乎在于删除 ContentPresenter 并用某种 ListBoxItem 样式或模板替换它,但这是我卡住的地方。ListBox 的 ContentPresenter 引用了其他一些模板“{TemplateBinding Template}” - 那在哪里?此外,当我尝试以任何方式修改 ContentPresenter 时,States 面板变为空白,并且我留下了一堆 XAML。幸运的是,有 CTRL-Z!

我真的认为微软必须重新考虑 XAML 方法或使 Blend 成为一个更完整的工具。它应该工作的方式是我应该能够单击任何元素并为其定义状态。如果我试图打破规则,Blend 应该告诉我并提供解决方法。只是让“状态”面板为空是没有帮助的。

0 投票
3 回答
10957 浏览

wpf - 将焦点设置在 ListBox 项上会中断键盘导航

以编程方式选择 ListBox 项目后,需要按两次向下\向上键来移动选择。有什么建议么?

看法:

代码:

0 投票
1 回答
722 浏览

wpf - WPF。如何强制 listitem 重绘自身?

我有一个ListBox包含描述一个人的对象。单击该项目时,此对象仅部分填充并完全填充(耗时的操作)。我想更改那些尚未填充的对象的样式,以便部分填充的项目以斜体显示。

我做了一个ItemTemplate

并定义了Style

它确实有效。我遇到的问题是在单击项目时更新样式。对象被填充,然后应该导致样式从斜体变为正常。

我能做些什么来强制ListItemListBox重绘自身并更新样式?还是应该在 HasData 属性更改时使用某种通知?

0 投票
2 回答
2662 浏览

wpf - WPF 样式触发器:我可以为各种属性应用一种样式吗?

似乎必须有一种方法可以做到这一点:

我基于两个属性触发器在我的列表框中应用 ItemContainerStyle。如您所见,我使用完全相同的一组触发器进入/退出操作,只是应用于两个不同的属性。是否有与 <Trigger Property="prop1" OR Property="prop2"> 等价的东西???(显然看起来不像那样,但这可能会让人明白这一点。)

0 投票
2 回答
575 浏览

wpf - 我如何在工具提示中显示数据网格..而不是数据网格的工具提示!

我有一个列表框及其绑定。我有类似这样的列表框项目的工具提示

现在我想在工具提示中显示一个数据网格,其中数据绑定....

请问有什么想法???

谢谢你

0 投票
2 回答
2279 浏览

wpf - WPF - 绑定 ItemsSource 时 ListBox 忽略样式

我在 WPF 中创建了样式化的 ListBox,以便将其呈现为复选框列表。

当我手动填充 ListBox 的项目时,样式效果很好。但是,当我将 ListBox 的 ItemsSource 绑定到静态资源(包含所需项目的 ItemsControl)时,样式将完全删除。

这里的风格:

这是正确显示样式的 ListBox 的代码:

这是忽略样式的 ListBox 的代码:

希望有人可以提供帮助 - 我对这一切都很陌生,并且已经尝试了我能想到的所有内容,但我读过的所有内容都让我相信设置 ItemsSource 应该与手动设置项目具有相同的结果,所以我可以'看不出这不起作用的任何原因。

谢谢,

0 投票
5 回答
3960 浏览

wpf - 以编程方式将命令添加到 WPF 中的列表框

在我的 WPF 应用程序中有一个包含项目的列表框。列表框通过 XAML 中的 xmldataprovider 填充,然后将其绑定到列表框的 Itemssource 属性。

好吧,从 XAML,我通过执行以下操作将命令绑定到列表框:

但我不知道如何以编程方式将命令绑定到每个列表框项。怎么做?

提前致谢。


首先很抱歉,没有将其作为评论发布。我不能把这一切都放在评论中。

好的,是的,我没有使用 ICommandSource 的 Executed 和 CanExecute 属性,尽管我已经在自定义类中注册并实现了它们(在 xaml 中它们也被注释了)。我已经在 routedCommand 但没有在自定义类中指定它们,我已经在窗口的构造函数中这样做了:

WinMain 后面的代码:

然后我也在后面的 WinMain 代码中实现这些方法:

在 WinMain XAML 中,我调用如下命令:

在我的自定义类 CommandListBox 中,我有一个 CanExecuteChanged ,您可以在其中看到我启用或禁用了控件,具体取决于后台工作人员是否完成:

但是在自定义类中,我没有实现你说的事件处理程序 OnSelected。

如果没有实现一切正常,自定义控件调用命令,并且到达 CanExecute 方法,并且 CanExecute 获得正确的值,取决于后台工作人员是否完成,并且当 CanExecute 更改其值时引发自定义控件中的 CanExecuteChanged . 当后台工作人员启动时,它会被禁用,但完成后它不会被启用。我已经调试过,当后台工作人员完成时,我可以看到 CanExecuteChanged 被执行并且 this.Enabled 正在获得正确的值(true),但由于某种原因,在 UI 中,尽管它获得了正确的值并且尽管在 RunWOrkerCompleted(在后台worker) 我强制使用 CommandManager.InvalidateRequerySuggested() 更新 UI。

我通过取消注释行解决了这个问题:

if (LayoutListBox != null) LayoutListBox.IsEnabled = !cBgWorkers.isRunning;

在 CanExecute 方法中。我不明白会发生什么。

那么如果我按照你说的做就没有必要了:

和 CommandBinding_Executed & CommandBinding_CanExecute 实现。我对吗?

但是如果我删除这些方法,我可以在哪里设置 this.enabled = !cBgWorkers.isRunning ?

我希望 WPF 为我的自定义控件自动设置 isEnabled 属性。这该怎么做?

提前致谢。


我正在应用您所说的有关附加行为的文章,并进行了一些更改以使其适应我的 ListBox。它效果不佳,或者我做错了什么。我想要的是避免在运行长任务(后台工作人员)时可以选择 ListBox 成员(listBoxItems)。所以我修改的文章的方法之一是:

(*) cBgWorkers 是一个具有一些方法和属性的公共静态类。属性之一是 isRunning,表示当前没有后台工作人员正在运行。然后如果没有后台工作人员正在运行,则必须启用列表框成员,否则必须禁用它们,因此当用户单击一个列表框项目时,当前页面不会更改为另一个,因为我之前禁用了它(每个列表框项目都附加了一个我的主应用程序中的页面)。

当其中一个后台工作人员(bw)或全部正在运行并且我选择列表框项目时一切正常:列表框项目被禁用,因为有 bw 正在运行,它避免将当前页面更改为另一个页面。当然,如果我禁用了列表框项目(或列表框项目),我将无法再次选择它,因为它已被禁用,这是我的问题,因为我希望当 bw 完成在 bw 运行时已禁用的列表框项目时,他们再次启用。不幸的是,正如我所见,附加行为并不是由 WPF 自动完成的,并且命令具有此优势(控件由 WPF 自动更新)。那么,如何分别在 bw 运行或不运行时禁用/重新启用列表框项目?

据我所知和所见,附加行为的一个优点是我认为它更有效,因为它们不会不断地调用动作(仅当动作,例如选择,产生时)。命令不断(不经常)检查是否可以执行绑定到控件的操作(因此如果可以执行,WPF 会自动启用控件,否则它们会显示为禁用),对吗?

谢谢。

0 投票
2 回答
5709 浏览

wpf - ListBoxItem IsSelected 样式

我还是没明白。你能否告诉我如何覆盖 ListBox 的默认行为。每次选择 ListBoxItem 时,都应更改边框的背景。不是整行的背景,而是指定的边框的背景。