【发布时间】:2015-11-12 07:56:01
【问题描述】:
我对 wpf 和用户控件创建有一些疑问。 我有简单的菜单控件,其中包括网格、图像(0 列)和文本块(1 列)。
我遇到的问题是如何将我的控件的所有子控件放到父控件附近的另一个网格中。
这是用户控件的演示代码:
<UserControl x:Name="userControl" x:Class="Yo.Controls.mItem"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="50" d:DesignWidth="400">
<Grid x:Name="m_Grid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{Binding ActualHeight, ElementName=userControl, Mode=OneWay}"/>
<ColumnDefinition/>
<ColumnDefinition Width="305"/>
</Grid.ColumnDefinitions>
<Image x:Name="img" Grid.Column="0"/>
<TextBlock x:Name="txt" Grid.Column="2"/>
<Grid x:Name="sub_Grid" Visibility="Hidden" Background="#78000000" Margin="-450,0,50,0" MouseLeftButtonUp="img_Check" MouseEnter="grid_Enter" MouseLeave="grid_Leave"/>
</Grid>
其中 sub_Grid 是必须放置孩子的地方。
<Controls:mItem Grid.Row="0" Text="Some txt" IsCheckable="False">
<Controls:mItem Text="Its Child" IsCheckable="False"/>
</Controls:mItem>
所以这段代码会将 Control with Text Its Child 放到 sub_Grid 中
【问题讨论】:
-
您可以使用 MVVM 完成此操作。您的文本框和图像可以是 DataTemplates 的 VM 对象。那么 Grid 应该有一个 ItemsControl 子级,它共享相同的 ItemSource。