簡體   English   中英

如何在Grid中對控件進行分組以在XAML中重用?

[英]How to group controls inside Grid for reuse in XAML?

在我的應用程序中,我有一些控件在邏輯上屬於同一控件,並且可以在不同窗口中的許多地方重復使用。 控件始終放置在網格內。

我不想每次使用它們時都復制控件(及其背后的代碼),而是希望將它們作為單個UserControl定義和維護在單個xaml文件中。

我現在有這個:

<Grid>
    <Grid.ColumnDefinitions>
        [ColumnDefinitions...]
    </Grid.ColumnDefinitions>

    <Grid.RowDefinitions>
        [RowDefinitions...]
    </Grid.RowDefinitions>

    <StackPanel Grid.Column="0" Grid.Row="0">
        <TextBlock Text="Caption" />
        <Border Padding="2" x:Name="myBorder">
            <TextBox TabIndex="1" x:Name="myTxt"/>
        </Border>
    </StackPanel>
    <ListBox x:Name="myList" Grid.Column="0" Grid.Row="0" Grid.RowSpan="2" Margin="5,50,5,0" Height="100" VerticalAlignment="Top" Visibility="Collapsed" />

    [More controls..]
</Grid>

但我想重用這一部分:

    <StackPanel Grid.Column="0" Grid.Row="0">
        <TextBlock Text="Caption" />
        <Border Padding="2" x:Name="myBorder">
            <TextBox TabIndex="1" x:Name="myTxt"/>
        </Border>
    </StackPanel>
    <ListBox x:Name="myList" Grid.Column="0" Grid.Row="0" Grid.RowSpan="2" Margin="5,50,5,0" Height="100" VerticalAlignment="Top" Visibility="Collapsed" />

作為單個控件-但是在使用控件時如何定義Grid.Column(以某種方式提供它作為參數)? -以及如何設置Grid.RowSpan值(即使代碼已移動到新的xaml文件,並且未在網格內定義)?

任何意見?

使它們成為一個單獨的用戶控件,然后將其包含在您的項目中。

如果您使用的是Blend,則非常簡單,只需選擇所有控件,右鍵單擊並放入“用戶控件”即可。

您也可以將其變成資源。 在ResourceDictionary中定義它,並在字典中包含要使用它的位置。 有一個問題-資源字典每次都會返回相同的實例-因此您必須添加屬性x:Shared =“ false”。

但是wpf的方法是弄清楚如何使用DataTemplate :)

暫無
暫無

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

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