Если вы пытаетесь «убежать» от ItemsControl
или DataGridView
, чтобы добраться до Window
, вы можете обнаружить, что AncestorType x:Type Window
не работает. Или, по крайней мере, не кажется ...
Если это так, вы, вероятно, используете Blend или Visual Studio и ожидаете, что данные будут видны во время разработки, чего не будет, потому что VS + Blend создает свои собственные экземпляры, которые на самом деле не являются Windows. Он будет хорошо работать во время выполнения, но не в режиме разработки.
Есть пара вещей, которые вы можете сделать:
Где DataContextWrapper
- это просто Сетка
namespace MyWPFApplication.Views {
public class DataContextWrapper : Grid
{
}
}
Затем, когда вы связываете, вы делаете это:
<TextBlock Text="{Binding="{Binding DataContext.SomeText,
RelativeSource={RelativeSource AncestorType={x:Type views:DataContextWrapper},
Mode=FindAncestor}}" />
Примечание: если вы хотите привязать свойство к самому окну, это сложнее, и вам, вероятно, следует выполнить привязку через свойство зависимости или что-то в этом роде. Но если вы используете MVVM, то это единственное решение, которое я нашел.