场景: 创建一个MarkupExtension,用Grid.Row ="{namespace:ClassExtension GridRowName}"替换Grid.Row ="0"(列相同)
Xaml代码:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" x:Name="TitleRow" />
<RowDefinition Height="Auto" x:Name="LastNameRow" />
<RowDefinition Height="Auto" x:Name="FirstNameRow" />
<RowDefinition Height="Auto" x:Name="EmailRow" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="LabelColumn" />
<ColumnDefinition x:Name="ValueColumn" />
</Grid.ColumnDefinitions>
<Label Grid.Row="{me:GridDefinition Name=TitleRow}" Grid.ColumnSpan="2" FontWeight="Bold" FontSize="14" />
<Label Grid.Row="{me:GridDefinition Name=LastNameRow}" Grid.Column="{me:GridDefinition Name=LabelColumn}" FontWeight="Bold" FontSize="14" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
要求:
问题:
Grid.Column的一切正常,但Grid.Row总是在设计时抛出"未实现的异常"(grid.row带下划线,grid.column不是).

行和列都命名正确,但行始终显示错误.如果我们指定一个无效的列名,该列会显示一个错误(这是预期的,因此Grid.Column工作正常!)

如您所见,列工作正常,但行不行.问题出在名为GridDefinitionExtension的MarkupExtension中:
[MarkupExtensionReturnType(typeof(int))]
public class GridDefinitionExtension : MarkupExtension
{
public string Name { private get; set; }
public override object ProvideValue(IServiceProvider serviceProvider) …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的应用程序中实现Model-View-Presenter设计模式.MVP模式的一般概念对我来说是已知的,但我更难以使用嵌套的用户控件来完成它.
我有一些可能的方案我可以实现,但在此之前,我想听听你的意见.
我认为发布我的任何代码并不重要,因为它更像是一个我试图理解的"概念".
所以场景是:
1页用于连接2个用户控件.其中一个用户控件包含一个子用户控件.在这种情况下,我如何解决MVP模式?
1 Page
1 UC
1 UC
1 SubUC
Run Code Online (Sandbox Code Playgroud)
编辑:
基本上我想知道的是我们如何在两个用户控件中使用MVP在两个视图(父级和子级)之间进行交互.
我将在没有MVP的ASP.net中向您展示一个示例:http: //pastie.org/5452134
现在使用MVP,我们是否仍然使用CodeBehind注册此类事件?知道这个父和子用户控件都将使用MVP模式.或者演示者是否包含在此互动中?
最终我可以将代码更改为:http: //pastie.org/5452180
但考虑到MVP模式,我想知道这是否合适......
或者我们更需要这样的方法:http: //pastie.org/5452174
以上所有示例都是在父视图的CodeBehind中编写的.这是正确的吗?如果没有,我们如何使用更好的方法实现这一目标
编辑2:我已经在我的示例方法中添加了一个解决方案:https://github.com/frederikprijck/ASP.NET-MVP 我认为这应该是我想要的......