[英]Unknown attachable member 'Grid.Row'and 'Grid.Column'
我是一名WPF設計師,是Windows應用程序開發的新手。 我正在嘗試將一組對象綁定到一個網格上,但仍然Unknown attachable member '(Grid.Row)' on element 'FrameworkElement'
獲得錯誤Unknown attachable member '(Grid.Row)' on element 'FrameworkElement'
Unknown attachable member '(Grid.Column)' on element 'FrameworkElement'
。
有人可以向我解釋如何通過樣式設置各種Grid附加屬性?
<ItemsControl ItemsSource="{Binding}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid>
<!-- Column and row definitions omitted for brevity -->
</Grid>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style TargetType="FrameworkElement">
<Setter Property="(Grid.Row)" Value="{Binding Row}" />
<Setter Property="(Grid.Column)" Value="{Binding Column}" />
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
不要使用PropertyPath。 您只需要一個合格的Owner.Property字符串。
<Setter Property="Grid.Row" Value="{Binding Row}" />
某些樣式和模板屬性(如Setter.Property)采用表面上類似於PropertyPath的限定屬性名稱。 但這不是一個真正的PropertyPath; 相反,它是一個合格的owner.property字符串格式用法,由WPF XAML處理器與DependencyProperty的類型轉換器一起使用。
事實證明,上面發布的代碼實際上存在3個問題。
正確識別Setter.Value
將使用一個使用PropertyPath的限定屬性名稱。 這里的修復是刪除括號 : <Setter Property="Grid.Row" ... />
和<Setter Property="Grid.Column" ... />
。
第二個問題是樣式目標類型。 事實證明,metro Grid附加屬性無法應用於FrameworkElement。 這里的解決方案是使用更具體的內容更新目標類型 : <Style TargetType="ContentPresenter" />
。
最后,與Silverlight一樣, metro setter的value屬性不支持綁定 。 因此,即使在修復了前兩個錯誤之后,setter實際上也在嘗試將網格附加屬性設置為Binding類型的實例。 雖然不是那么簡單, 但可以在此處找到解決方案的所有細節 。 總之,您可以使用setter 設置自定義附加屬性,該屬性將依次設置任何所需的綁定 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.