簡體   English   中英

未知的可附加成員'Grid.Row'和'Grid.Column'

[英]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}" />

取自PropertyPath XAML語法

某些樣式和模板屬性(如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 settervalue屬性不支持綁定 因此,即使在修復了前兩個錯誤之后,setter實際上也在嘗試將網格附加屬性設置為Binding類型的實例。 雖然不是那么簡單, 但可以在此處找到解決方案的所有細節 總之,您可以使用setter 設置自定義附加屬性,該屬性將依次設置任何所需的綁定

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM