没有 MVVM 的 WPF 简单对话框
WPF Simple dialog box without MVVM
我想要一个带有文本字段的简单对话框。现在我有:
视图模型:
public class MyViewModel
{
public string AA { get; set; }
}
查看:
public partial class MyView : Window
{
public MyView(MyViewModel context)
{
InitializeComponent();
this.DataContext = context;
}
public string BB {get; set; }
}
<Window
...>
<Grid>
<Label>name:</Label>
<TextBox Width="110">
<TextBox.Text>
<Binding Path="AA"/>
</TextBox.Text>
</TextBox>
...
</Grid >
</Window>
为了打开它并获取我调用的值:
MyViewModel model = new MyViewModel();
MyView dialog = new MyView(model);
dialog.ShowDialog();
现在我可以从 MyViewModel AA 中获取提供的 TextBox 值 属性。
是否可以将提供的值存储在 MyView BB 中 属性(从而删除 MyViewModel)?我试图更改 xaml 配置,但无论我放在那里什么,BB 属性 始终为空。
我问的唯一原因是我的对话框只会收集这个单一值,我希望它尽可能薄。
<Window x:Name="root"
...>
<Grid>
<Label>name:</Label>
<TextBox Width="110" Text="{Binding BB, ElementName=root} />
...
</Grid >
</Window>
应该就是您需要做的全部。
您也可以简单地替换
this.DataContext = context;
来自
this.DataContext = this;
我会把它放在 InitializeComponent 调用之前。
但是如果你想把文本框的值存到BB,那么你还需要设置模式:
<TextBox Text="{Binding BB, Mode=TwoWay}"/>
并且不要忘记在您的 MyView 中实现 INotifyPropertyChanged class。
你可以采用我使用的方法:Good or bad practice for Dialogs in wpf with MVVM?
在这里你可以像
一样调用一个 dailogservice
var result = this.uiDialogService.ShowDialog("Dialogwindow title goes here", dialogwindowVM);
...对对话框结果执行任何操作...
我想要一个带有文本字段的简单对话框。现在我有:
视图模型:
public class MyViewModel
{
public string AA { get; set; }
}
查看:
public partial class MyView : Window
{
public MyView(MyViewModel context)
{
InitializeComponent();
this.DataContext = context;
}
public string BB {get; set; }
}
<Window
...>
<Grid>
<Label>name:</Label>
<TextBox Width="110">
<TextBox.Text>
<Binding Path="AA"/>
</TextBox.Text>
</TextBox>
...
</Grid >
</Window>
为了打开它并获取我调用的值:
MyViewModel model = new MyViewModel();
MyView dialog = new MyView(model);
dialog.ShowDialog();
现在我可以从 MyViewModel AA 中获取提供的 TextBox 值 属性。
是否可以将提供的值存储在 MyView BB 中 属性(从而删除 MyViewModel)?我试图更改 xaml 配置,但无论我放在那里什么,BB 属性 始终为空。
我问的唯一原因是我的对话框只会收集这个单一值,我希望它尽可能薄。
<Window x:Name="root"
...>
<Grid>
<Label>name:</Label>
<TextBox Width="110" Text="{Binding BB, ElementName=root} />
...
</Grid >
</Window>
应该就是您需要做的全部。
您也可以简单地替换
this.DataContext = context;
来自
this.DataContext = this;
我会把它放在 InitializeComponent 调用之前。
但是如果你想把文本框的值存到BB,那么你还需要设置模式:
<TextBox Text="{Binding BB, Mode=TwoWay}"/>
并且不要忘记在您的 MyView 中实现 INotifyPropertyChanged class。
你可以采用我使用的方法:Good or bad practice for Dialogs in wpf with MVVM?
在这里你可以像
一样调用一个 dailogservicevar result = this.uiDialogService.ShowDialog("Dialogwindow title goes here", dialogwindowVM);
...对对话框结果执行任何操作...