c# - 如何在 Grid 中对控件进行分组以便在 XAML 中重用?

标签 c# wpf 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,那真的很简单,只需选择所有控件,右键单击并制作成用户控件即可。

关于c# - 如何在 Grid 中对控件进行分组以便在 XAML 中重用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3784887/

相关文章:

c# - 使用指定的电子表格类型创建 XmlNode

wpf - 如何在 Silverlight 中操纵用远见物理学制作的布娃娃?

c# - ProgressBar 作为 DataGridView 行的背景

c# - 如何绑定(bind)文本框的页眉?

xaml - Xamarin.Forms:创建 SearchBar

c# - 带种子的 CreateMany 有什么作用?

c# - 为什么我的新 BitArray 初始化时使用了错误的值?

c# - ANTLR 访问者单元测试在一条规则上成功,但在另一条规则上失败

c# - 使用自定义 WPF 控件时无法设置某些属性

xaml - Xamarin Forms 显示/隐藏条目选项