gpt4 book ai didi

c# - 将单个 WPF 控件绑定(bind)到多个项目

转载 作者:太空宇宙 更新时间:2023-11-03 15:53:55 27 4
gpt4 key购买 nike

我正在尝试在我正在使用的编辑器中创建一个属性面板,我希望能够在其中修改 View 中的多个选定项目。我无法想出一种直接的“WPF”方式来执行此操作,该方式不涉及大量隐藏代码或特定于类型的转换器或实现。对于完成这样的事情的最干净的方法有什么建议吗?只是为了使它具体,这就是我所说的:

enter image description here

右侧的“提示”作为 ItemsControl 实现,因此我将“属性”面板绑定(bind)到 SelectedItems 属性,如下所示:

<ContentControl>
<ContentControl.Style>
<Style TargetType="{x:Type ContentControl}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Count}" Value="1">
<Setter Property="Content" Value="{Binding Path=[0]}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>

DataTrigger 确保面板仅在选择一个项目时可用,但我希望能够同时绑定(bind)到多个项目。理想情况下,源绑定(bind)会聚合当前属性值以达成共识(并且在存在多个值时不显示任何内容)。我最感兴趣的设置是颜色,但如果有一个至少有点通用的解决方案就更好了。

最佳答案

source binding would aggregate the current property values for consensus

创建一个名为 XYZ 的新属性,它聚合其他属性并在您的 Xaml 中绑定(bind)到它。除非绑定(bind)了其他聚合属性,否则您不必为它们调用 Notify Property Changed,但您将在它们中调用 OnPropertyChanged("XYZ")

因此,聚合中的任何更改都会冒泡到新属性,其通知属性更改会冒泡到 Xaml。添加具有类似颜色/可见性/启用等过程的其他属性。

请参阅我对 MVVM update of calculated properties 的回答举个例子。

关于c# - 将单个 WPF 控件绑定(bind)到多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24561375/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com