【发布时间】:2013-07-22 23:58:14
【问题描述】:
如何设置单个控件的DataContext来编码后面?
无法使用 Windows 的 DataContext,因为它指向其他内容。
对于单个控件,我想将 DataContext 设置为代码隐藏,但无法弄清楚。
不使用 MVVM。
这不起作用,因为 RelativeSource 出现在 ComboBox 中。
<ComboBox DataContext="{Binding RelativeSource={RelativeSource Self}}" ItemsSource="{Binding Path=Chars}" SelectedItem="{Binding Path=Comma}" Width="40" PresentationTraceSources.TraceLevel="High" />
这是一个页面 - 不是一个窗口
这行得通:
<ComboBox DataContext="{Binding RelativeSource={RelativeSource AncestorType=Page}}" ItemsSource="{Binding Path=Chars}" SelectedItem="{Binding Path=Comma, Mode=TwoWay}" Width="40" PresentationTraceSources.TraceLevel="High" />
有没有更好的解决方案?
【问题讨论】:
-
你试过给
ComboBox一个名字说x:Name="cmBox"并在代码隐藏加载事件中分配DataContext直接Loaded += (sender, args) => cmBox.DataContext = this;其中this是你的代码隐藏类想设置为ComboBox的DataContext -
@Viv,如何将您的评论升级为答案,Blam,您能否将此问题标记为已回答,这样人们就不会浪费时间来这里给您答案?
标签: .net wpf data-binding code-behind