我有一個ComboBox
,它構成了一個DataTemplate
,我無法將其IsEnabled
屬性綁定到模板DataGridTemplateColumn
上的IsReadOnly
屬性。使用DataTemplate中應用的樣式綁定到DataGridTemplateColumn?
我已經收到以下錯誤在我的VS輸出窗口:
在 '對象' '' ContentPresenter」
組合框風格沒有找到'IsReadOnly' 屬性:
<Style TargetType="{x:Type ComboBox}" x:Key="ProficiencyColumnComboBoxStyle">
<Setter Property="IsEnabled"
Value="{Binding RelativeSource={RelativeSource Mode=TemplatedParent},
Path=IsReadOnly, Converter={StaticResource BooleanOppositeConverter}}" />
</Style>
我認爲問題出在我如何指定fy RelativeSource
旨在識別我的DataGridColumn
。我已經試過:
RelativeSource={RelativeSource TemplatedParent}
RelativeSource AncestorType={x:Type DataGridColumn}
RelativeSource AncestorType={x:Type DataGridTemplateColumn}
我嘗試添加其他制定者這種風格,和他們做才能生效,所以我知道風格和DataTemplate
正在應用於控件。
P.S.
我用同樣的方法將另一ComboBox
一個DataTemplate
內綁定到一個屬性對父模板其列DataGrid
。 區別在於我在這裏使用的是轉換器,並試圖綁定到列(而不是網格)上的屬性。但是,即使我從上述樣式中刪除轉換器,也不會發生綁定。
不能像這樣綁定到列,它們不是邏輯或可視樹中的對象,它們只是數據,因此RelativeSource將失敗。你應該[調試綁定](http://blogs.msdn.com/b/wpfsldesigner/archive/2010/06/30/debugging-data-bindings-in-a-wpf-or-silverlight-application.aspx) ,當然你會得到一個綁定錯誤。 –
@ H.B。這是一篇優秀的文章,爲您提供支持!在我的輸出窗口中發現的綁定錯誤出現在問題中......如果您知道解決方法或替代方法來實現我的目標,請發佈答案,我很樂意接受。 – Rob
這是你爲TemplatedParent得到的錯誤,我假設,對於綁定到列,你應該得到一些關於源未找到的東西。無論如何,通常你只能使用'Binding.Source'結合['x:Reference'](http://msdn.microsoft.com/en-us/library/ee795380.aspx)綁定到DG列,是週期性依賴的併發症。 –