小编Fre*_*jck的帖子

WPF MarkupExtension和RowDefinition导致NotImplementedException

场景: 创建一个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)

要求:

  • 使用incorrent GridRowName(或columnName)时显示XAML错误
  • 使用正确的GridRowName(或columnName)时,不显示XAML错误
  • 当Valid ColumnName用于Row声明(和vica verca)时,应显示XAML错误

问题: 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)

c# wpf xaml design-time markup-extensions

7
推荐指数
1
解决办法
651
查看次数

ASP.NET MVP模式

我正在尝试在我的应用程序中实现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 我认为这应该是我想要的......

c# asp.net mvp design-patterns

3
推荐指数
1
解决办法
3248
查看次数

标签 统计

c# ×2

asp.net ×1

design-patterns ×1

design-time ×1

markup-extensions ×1

mvp ×1

wpf ×1

xaml ×1