【发布时间】:2011-02-16 15:03:06
【问题描述】:
我目前正在学习在 WPF 中创建自定义控件。我使用标签和文本框成功创建了一个简单的自定义控件。我能够允许通过 DependencyProperty 设置标签文本。
现在我正在创建一个具有 ComboBox 的用户控件。我需要允许从控件外部向此 ComboBox 添加项目。
为了实现这一点,我尝试公开 ItemsCollection 类型的 DependencyProperty,它将允许访问 ComboBox 的 Items 属性(我的控件示例中的 DP 名为“CbItems”)。但我收到错误,因为 Combobox 的 Items 属性是 ReadOnly。
控制 XAML
<UserControl x:Class="MyWpfApp.Controls.MyControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="Auto" Width="Auto">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Content="{Binding FieldLabel}"></Label>
<ComboBox Name="cmb" Grid.Column="1" Width="150"></ComboBox>
</Grid>
</UserControl>
主窗口 XAML
<Window x:Class="MyWpfApp.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ctl="clr-namespace:MyWpfApp.Controls"
Title="Window1" Height="300" Width="300">
<Grid>
<ctl:MyControl>
<ctl:MyControl.CbItems>
<ComboBoxItem>Hello</ComboBoxItem>
<ComboBoxItem>World</ComboBoxItem>
<ComboBoxItem>Hi</ComboBoxItem>
</ctl:LobCombox.CbItems>
</ctl:LobCombox>
</Grid>
</Window>
我想知道实现此功能的正确方法是什么。我相信这个问题的答案也可能有助于其他控件,如 GridView 等
非常感谢
【问题讨论】:
标签: wpf xaml user-controls