我遇到了将文本修饰绑定到datagrid列DataTemplate的问题。这是xaml设置。
<UserControl x:Class="myClass"...>
<DataGrid
Name="_dataGrid"
FontFamily="{Binding Font_Family}"
FontWeight="{Binding Font_Weight}">
<Controls:DataGrid.Columns>
<Controls:DataGridTemplateColumn>
<Controls:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock
Text="{Binding Data1}"
Foreground="Red"
//This binding does not work
TextDecorations="{Binding Decor_Underline"/>
</DataTemplate>
</Controls:DataGridTemplateColumn.CellTemplate>
</Controls:DataGridTemplateColumn>
</Controls:DataGrid.Columns>
</DataGrid>
</UserControl>
我得到的错误是这样的。
BindingExpression with XPath cannot bind to non-XML object.; XPath='Model.Decor_Underline' BindingExpression:Path=Decor_Underline; DataItem='DataGrid'
如果我手动设置文本装饰,它可以正常工作。 TextDecoration = "Underline"
Font_Family和Font_Weight的绑定工作正常。
我尝试过以下操作;但由于DataGrid没有TextDecorations属性,因此无效。
TextDecorations="{Binding Decor_Underline ,RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}
这是模型中的属性。事件按预期提出,对控件没有影响 - 好像没有人在听。方案是按下按钮,网格列文本框加下划线。
public TextDecorationCollection Decor_Underline {
get { return decor_Underline; }
set {
if(someFlg)
decor_Underline = TextDecorations.Underline;
RaisePropertyChanged("Decor_Underline");
}
}
TextDecorationCollection decor_Underline;
任何想法?