我正在尝试创建自己的GridViewColumn并使用一些带有绑定的issus。
有人可以向我解释为什么以下Header绑定确实有效吗
<GridViewColumn x:Class="interneProzesse_UebersetzungstoolNS.TranslateGridViewColumn"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:conv="clr-namespace:interneProzesse_UebersetzungstoolNS.Converter"
xmlns:hk="clr-namespace:interneProzesse_UebersetzungstoolNS.Hilfsklassen"
xmlns:local="clr-namespace:interneProzesse_UebersetzungstoolNS"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"Header="{Binding RelativeSource={RelativeSource Self}, Path=Sprache, UpdateSourceTrigger=PropertyChanged}">
</GridViewColumn>
虽然在这里失败了?
<GridViewColumn x:Class="interneProzesse_UebersetzungstoolNS.TranslateGridViewColumn"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:conv="clr-namespace:interneProzesse_UebersetzungstoolNS.Converter"
xmlns:hk="clr-namespace:interneProzesse_UebersetzungstoolNS.Hilfsklassen"
xmlns:local="clr-namespace:interneProzesse_UebersetzungstoolNS"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<GridViewColumn.Header>
<GridViewColumnHeader Content="{Binding RelativeSource={RelativeSource AncestorType={x:Type local:TranslateGridViewColumn}}, Path=Sprache, UpdateSourceTrigger=PropertyChanged}"/>
</GridViewColumn.Header>
<GridViewColumn>
Sprache
是我的TranslateGridViewColumn的一个属性,它继承自GridViewColumn。
答案 0 :(得分:0)
在发布问题几分钟后,我在thread找到了答案。 答案基本上是将GridViewColumn添加到可视树中,因此使用此可视树(例如FindAncestor)的绑定无法工作。
所以我将其绑定到我绑定到的元素的Loaded事件(例如GridViewColumnHeader)并在代码隐藏中进行绑定:
BindingOperations.SetBinding(sender as GridViewColumnHeader, GridViewColumnHeader.ContentProperty, new Binding("Sprache") { Source = this, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Mode = BindingMode.OneWay });