您能否在 WPF XAML 中的 ObservableCollection 中的对象上访问字典 属性?
Can you access a Dictionary property on an object that is in an ObservableCollection in WPF XAML?
我有一个带有包含网格的 ItemsControl 的视图。 ItemsControl 绑定到 ObservableCollection。
每个事物都有以下属性:名称(字符串)、值(字符串)、位置字典(tabid(字符串)、位置)
每个位置都有以下属性:Col(int)、Row(int)、TabId(string)、IsVisible(bool)
视图位于 WPF 用户控件的选项卡中。
是否可以在 XAML 中使用 Thing 上的字典来确定行和列以将 Thing 放置在 ItemsControl.ItemContainerStyle Setter 中?
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Grid.Row" Value={Binding Path=LocationsDictionary[thisTabId].Row}" />
<Setter Property="Grid.Column" Value={Binding Path=LocationsDictionary[thisTabId].Col}" />
</Style>
thisTabId 变量是否可以在视图级别设置并在 ItemsControl 中的绑定路径中使用?
这里的目标是能够将Things放置在网格中,它只能存在一次,但可以存在于具有相同View的其他选项卡上。我有一些东西在一个网格上工作,在 Thing 上有 Row 和 Col,但是当应用于第二个网格时,Things 最终在每个 grid/tab 上的同一个地方。事物 2 最终位于每个选项卡上的相同网格单元格位置。
字典是我们想出的一种方法,可以为事物提供多个位置属性,因此它可以存在于不同位置的多个选项卡上。
你不能在纯 XAML 中做这样的事情,除非 thisTabId
是一个常数:
{Binding Path=LocationsDictionary[thisTabId].Row}
换句话说,thisTabId
不能是随 ItemsControl
中的每个项目而变化的动态值。如果你想这样做,你可以使用一个 multi value converter 绑定到 LocationsDictionary
属性 和 thisTabId
属性 和 returns LocationsDictionary[thisTabId].Row
或 LocationsDictionary[thisTabId].Column
.
我有一个带有包含网格的 ItemsControl 的视图。 ItemsControl 绑定到 ObservableCollection。
每个事物都有以下属性:名称(字符串)、值(字符串)、位置字典(tabid(字符串)、位置)
每个位置都有以下属性:Col(int)、Row(int)、TabId(string)、IsVisible(bool)
视图位于 WPF 用户控件的选项卡中。
是否可以在 XAML 中使用 Thing 上的字典来确定行和列以将 Thing 放置在 ItemsControl.ItemContainerStyle Setter 中?
<ItemsControl.ItemContainerStyle> <Style> <Setter Property="Grid.Row" Value={Binding Path=LocationsDictionary[thisTabId].Row}" /> <Setter Property="Grid.Column" Value={Binding Path=LocationsDictionary[thisTabId].Col}" /> </Style>
thisTabId 变量是否可以在视图级别设置并在 ItemsControl 中的绑定路径中使用?
这里的目标是能够将Things放置在网格中,它只能存在一次,但可以存在于具有相同View的其他选项卡上。我有一些东西在一个网格上工作,在 Thing 上有 Row 和 Col,但是当应用于第二个网格时,Things 最终在每个 grid/tab 上的同一个地方。事物 2 最终位于每个选项卡上的相同网格单元格位置。
字典是我们想出的一种方法,可以为事物提供多个位置属性,因此它可以存在于不同位置的多个选项卡上。
你不能在纯 XAML 中做这样的事情,除非 thisTabId
是一个常数:
{Binding Path=LocationsDictionary[thisTabId].Row}
换句话说,thisTabId
不能是随 ItemsControl
中的每个项目而变化的动态值。如果你想这样做,你可以使用一个 multi value converter 绑定到 LocationsDictionary
属性 和 thisTabId
属性 和 returns LocationsDictionary[thisTabId].Row
或 LocationsDictionary[thisTabId].Column
.