(十九)IDialogService
首页添加待办与备忘录
1. 先设计弹出框的页面
尺寸与命名空间不要忘记,备忘录的把状态删掉改一下名字就行
xmlns:md="http://materialdesigninxaml.net/winfx/xaml/themes"
Width="450" Height="280"
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<!-- 边距设置先水平后垂直如果是2位 -->
<TextBlock
Padding="20,10"
FontSize="20"
FontWeight="Bold"
Text="添加备忘录" />
<DockPanel Grid.Row="1" LastChildFill="False">
<TextBox
Margin="20,0"
md:HintAssist.Hint="请输入备忘录概要"
DockPanel.Dock="Top" />
<TextBox
MinHeight="100"
Margin="20,0"
md:HintAssist.Hint="请输入备忘录内容"
AcceptsReturn="True"
DockPanel.Dock="Top"
TextWrapping="Wrap" />
<!-- Wrap是按字符换行,WrapWithOverflow是按空格换行。 -->
<!-- 当TextWrapping设置为"Wrap"时,输入字符串超出指定宽度后就会自动发生换行 -->
<!-- AcceptsReturn如果文本框允许换行符,则为 true;否则为 false。 默认值为 false。 -->
</DockPanel>
<StackPanel
Grid.Row="2"
Margin="10"
HorizontalAlignment="Right"
Orientation="Horizontal">
<Button
Margin="0,0,10,0"
Content="取消"
Style="{StaticResource MaterialDesignOutlinedButton}" />
<Button Content="确定" />
</StackPanel>
</Grid>
2. 主页的model层逻辑
- 把测试方法删掉
- 创建命令及方法实现
public DelegateCommand<string> ExecuteCommand { get;private set; }
private void Execute(string obj)
{
switch (obj)
{
case "新增待办": AddToDo(); break;
case "新增备忘录": AddMemo(); break;
}
}
void AddToDo()
{
dialog.ShowDialog("AddToDoView");
}
void AddMemo()
{
dialog.ShowDialog("AddMemoView");
}
-
构造函数修改
![image]()
-
调用弹窗是通过prism的IDialogSerivce依赖注入ctor
-
所有弹窗模块都是通过依赖注入的,可以通过名称的方式找到弹窗
-
在主页中具体的业务与模块是解耦的
-
在app.cs里面注册
![image]()
3. 添加的具体逻辑实现
实现IDialogAware接口,然后todo里面也是一样
public class AddMemoViewModel : IDialogAware
{
public string Title { get; set; }
public event Action<IDialogResult> RequestClose;
public bool CanCloseDialog()
{
return true;
}
public void OnDialogClosed()
{
}
public void OnDialogOpened(IDialogParameters parameters)
{
}
}




浙公网安备 33010602011771号