我嘗試在DevExpress的網格控件綁定到的提示單元格的值,但 我「丟失」的DataContext在Setter.Value屬性:如何在Setter Value屬性中查找DataContext?
這裏GridControl(只有一列)的全碼:
<dxg:GridControl Grid.Row="0"
x:Name="grid"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
dx:ThemeManager.ThemeName="Seven"
ScrollViewer.CanContentScroll="True"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ItemsSource="{Binding ObjectViewModel.Collection,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding CurrentElement,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,TargetNullValue=null}"
>
<dxg:GridControl.View>
<!--region #RowCellMenuCustomization-->
<dxg:TableView x:Name="view" AutoWidth="True"
UseLightweightTemplates="None"
>
</dxg:TableView.RowCellMenuCustomizations>
</dxg:TableView>
<!--endregion #RowCellMenuCustomization-->
</dxg:GridControl.View>
<dxg:GridControl.Columns>
<dxg:GridColumn
Header="Address"
Binding="{Binding Address,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}"
AllowEditing="False"
HorizontalHeaderContentAlignment="Stretch"
Width="*"
AllowResizing="True"
HeaderToolTip="Address"
>
<dxg:GridColumn.CellStyle
>
<Style x:Name="toolTipStyle"
BasedOn="{StaticResource {dxgt:GridRowThemeKey ResourceKey=CellStyle}}"
TargetType="dxg:GridCellContentPresenter">
<Setter Property="ToolTip">
<Setter.Value>
<TextBlock Text="{Binding Path=Address,RelativeSource={RelativeSource Self},Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
</Setter.Value>
</Setter>
</Style>
</dxg:GridColumn.CellStyle>
</dxg:GridColumn>
</dxg:GridControl.Columns>
</dxg:GridControl>
集合類代碼:
public class Element
{
public String Address
{
returm SomeObject.Address;
}
//other properties
}
所以,感謝this answer:它適用於一些不具約束力的文本,但是當我嘗試結合其財產這是行不通的。
Visual Studio的輸出窗口日誌:
System.Windows.Data Error: 40 : BindingExpression path error: 'Address' property not found on 'object' ''TextBlock' (Name='')'. BindingExpression:Path=Address; DataItem='TextBlock' (Name=''); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
看來,我失去了DataContext的,但如何將其在Setter.Value綁定?
P.S. @ Rekshino,我這樣做,輸出日誌:
System.Windows.Data Error: 40 : BindingExpression path error: 'Address' property not found on 'object' ''EditGridCellData' (HashCode=41748728)'. BindingExpression:Path=DataContext.Address; DataItem='TextBlock' (Name=''); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
這是正確的,它不起作用。我不知道,devExpress使用包裝。所以從mm8的答案應該是正確的,另請參閱:https://stackoverflow.com/questions/34687716/wpf-binding-errors – Rekshino