我遇到的一個重複問題是需要爲datagrid創建增強的文本列。我的意思是,這些列的行爲與普通文本列的行爲相似,但具有額外的圖形或功能,如顯示在文本旁邊的圖像。所以我使用模板列,但顯然這是指在產生大量的預計正常文本列的功能,如文本框編輯模板「從頭開始」:WPF - 暴露繼承列的綁定方法
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox
FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}"
Text="{Binding Path=[binded text], Mode=TwoWay, UpdateSourceTrigger=LostFocus}"/>
我想定義一個從DataGridTemplateColumn繼承的列,然後將所有這些代碼轉儲到它中,這樣我就可以將這些列與任何我希望的數據網格重複使用。但是如上所示,我不能在類定義中聲明綁定,因爲這顯然取決於用法。
如何定義一個使用子控件(特別是本例中的單元格編輯文本框)的繼承的datagrid列,但是仍然允許在xaml內部已經用xaml聲明列時爲這些控件設置綁定實際的數據網格?
到目前爲止,我已經試圖揭露做到這一點的方法,但它不工作:
Public Class MyTextColumn
Inherits DataGridTemplateColumn
....
Public Property EditorBinding As String
Get....
Set(value As String)
Dim b As New Binding(value)
b.Mode = BindingMode.TwoWay
b.UpdateSourceTrigger = UpdateSourceTrigger.LostFocus
Dim tb = DirectCast(Me.CellEditingTemplate.LoadContent, TextBox)
tb.SetBinding(TextBox.TextProperty, b)
End Set
End Property
不工作,我最好的猜測是我沒有設置Binding.Source
,但我沒有想法我應該設置它。它變得非常令人沮喪。
對於未答覆您的答案表示歉意。我撕裂了一個手指韌帶,並且本月沒有能夠做很多的代碼:(祝你好運,我將能夠在不久的將來檢查這一點。 – Tekito
對不起,但我沒有得到這個工作。也許你可以發佈complate列定義?要清楚,我想'IsSpinning'綁定到每個行的源對象的屬性。 – Tekito