【发布时间】:2015-07-07 18:15:12
【问题描述】:
我正在构建一个 WPF 控件,它将在显示模式下显示一个组件,然后单击,将切换到一个在编辑模式下的组件。
这两个组件将被绑定,以便编辑值反映在显示组件(通常是 TextBlock)上。
我想要的 XAML 语法如下。
<ListView.View>
<GridView>
<GridViewColumn Width="140" Header="Rating Year">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Controls:EditableControlContainer>
<Controls:EditableControlContainer.DisplayControl>
<TextBlock Text="{Binding ValueString}" />
</Controls:EditableControlContainer.DisplayControl>
</Controls:EditableControlContainer>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</ListView.View>
背后的代码
public partial class EditableControlContainer : UserControl
{
private UserControl displayControl;
public UserControl DisplayControl {
get { return displayControl; }
set { displayControl = value; }
}
private UserControl editControl;
public UserControl EditControl {
get { return editControl; }
set { editControl = value; }
}
public EditableControlContainer() {
InitializeComponent();
}
}
我得到的错误是 EditableControlContainer.DisplayControl 无法识别或无法访问。
我也不确定我是否可以包含一个对象或类型 UserControl(最好我想使用一个接口,虽然我不确定是哪一个)。
谁能解释或提供一个资源链接来演示如何在 XAML 中使 UserControl 中的属性可配置?
我浏览了论坛,但找不到任何内容。
非常感谢。
【问题讨论】:
-
这是导致代码无法编译的实际错误,还是只是 XAML 编辑器中的波浪形下划线指示符?
-
这导致代码无法编译,但重启VS后,现在只是显示一个错误,指出该属性不支持TextBlock
-
我也做了一些测试,在重新启动 VS 之前我遇到了完全相同的错误。我想知道 VS 和引用有什么问题。
-
我在对 Using 语句进行了大量更改时遇到了类似的问题。有时,VS 在重新启动之前不会解析任何包。这似乎是 VS 中的一个怪癖,但这是我第一次在 XAML 中配置自定义控件时遇到它。
-
作为进一步考虑,我已将类型从 UserControl 更改为 UIElement,并且再次需要重新启动 VS 以清除 XAML 中的错误。希望这会在某个时候在 VS 的更新中得到解决。