[英]External UserControl with Bindings in WPF/C#
因此,我有一个UserControl,它基本上是一个具有3个不同的DataGrid和一些标签的网格。 看到我需要如何使用3次,而不是复制和粘贴代码,我想我只需生成一次并在主窗口中使用它。
我已经将UserControl定义为:
<UserControl x:Class="Propuestas.UI.Andrei.DGMTX"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Propuestas.UI.Andrei"
mc:Ignorable="d"
Height="300"
Width="791.496">
我在窗口中这样使用它:
<StackPanel Grid.Row="2">
<local:DGMTX/>
<local:DGMTX/>
<local:DGMTX/>
</StackPanel>
由于某种原因,它没有显示在我主窗口的设计器面板中。 我做错了什么吗?
另外,我希望能够基于绑定元素进行绑定。 例如,假设我有一个Model类,其中包含我需要在UserControl中表示的所有数据。 我想做类似的事情
<local:DGMTX Binding = {Binding Model}/>
然后可以在其代码中绑定UserControl中的所有其他元素。 有没有办法可以在XAML中做到这一点? 还是我必须以编程方式进行?
有两种方法可以将视图模型与控件进行通信:
正如一位评论者所建议的,将您的视图模型绑定到用户控件的数据上下文。 这样可以将视图模型中的所有内容绑定到控件的内部工作。 问题在于内部工作方式现在取决于对象与之关联的数据。
仅为视图模型中用户控件实际需要的属性创建依赖项属性。 在所有案例中,我个人都比第一个更喜欢这种情况,因为您完全知道控件需要什么数据,并且可以以视图模型不负责的方式以控件特有的方式操作绑定数据,因此,我个人最喜欢这种情况。
创建自己的控件时,需要注意有关设计师支持的几件事:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.