我在数据模板中有一个要绑定到主数据上下文某些属性的元素。 我意识到在这种特定情况下,最好使用其他解决方案(并且我有一个可以避免这种情况的可行解决方案),但是我怀疑这种问题可能会再次出现,并且我想知道在一般情况下该如何解决
以下是我的具体情况。
数据层次结构:我有一个类型A
的列表,每个A
的实例都有一个类型B
的列表,每个{{1 }}还有一些其他数据,包括用于文本日志的B
。
UI结构:我有一个string
来选择类型为ComboBox
的项目。我有一个A
,其中的选项卡代表类型为TabControl
的项目,取自上面所选的B
。在每个选项卡中,都有一种输入数据的方法来填充类型为A
的对象,还有一个日志,表示对该B
实例的更改。
后勤逻辑:我使用属性(B
和SelectionA
,在数据上下文SelectionB
)中跟踪每个列表中的选定项目,这些属性会在它们更改。 MainWindowViewModel
对象还通知其日志文本何时更改。这些可确保UI响应对后备数据的更改。
问题:我想将通知逻辑全部移到一个位置(B
,即DataContext
),而不是放在{{1 }}类,需要复制通知逻辑。为此,我添加了一个属性(MainWindowViewModel
)来跟踪B
对象的SelectionBLogText
属性,并将日志(在模板化的选项卡中)绑定到主{{1} }属性。问题在于,在选项卡页中,我似乎只能绑定到所选LogText
对象的属性(从所选选项卡),而我需要绑定到SelectionB
的属性。我已经尝试过使用SelectionBLogText
,但到目前为止我都没有尝试过,但是我看文档越多,就越觉得它是为其他工作而设计的。
XAML(已删除无关的信息):
B
以及背后的代码:
DataContext
答案 0 :(得分:1)
使用相对绑定时是否尝试过类似的方法?如果没有,请检查一下。
<TextBox IsReadOnly="True"
Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window},
Path=Datacontext.SelectionBLogText}"/>