0

如何设置单个控件的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" />

有更好的解决方案吗?

4

1 回答 1

0

将我的评论转换为答案:

由于您没有关注 MVVM,因此您可以直接从代码隐藏中提供ComboBox名称并直接分配给它。DataContext

<ComboBox x:Name="cmBox" ... />

在代码隐藏类的ctor中:

Loaded += (sender, args) => cmBox.DataContext = this;

RelativeSource说^^,使用绑定直接从xaml分配没有错DataContext,这是我自己更喜欢做的事情(但我确实“尝试”在我的应用程序中遵守MVVM)。

于 2013-07-22T15:58:14.793 回答