作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须在我的主 ViewModel 中启动某种子窗口,并且在这个子窗口上用户将输入一些文本,我必须在关闭子窗口后在主视图模型中使用这个文本。
我可以弹出一个子窗口,我绑定(bind)到它的子窗口 View 模型
我启动子窗口的主视图模型是:
private void OpenLayoutNameWindow()
{
LayOutName_VM chldWindow =new LayOutName_VM();
chldWindow.Show();
string layOutName = chldWindow.LayOutName;
MessageBox.Show("Name is:"+ layOutName); //this message box is popuped before i close the child window save button and its empty.
}
<StackPanel>
<Label Margin="0,5,0,0" HorizontalAlignment="Center">Please name your new Layout</Label>
<TextBox Margin="0,5,0,0" Width="120" Height="20" HorizontalAlignment="Center" Text="{Binding LayOutName, Mode=TwoWay}"></TextBox>
<Button Margin="0,5,0,0" Width="80" Height="20" HorizontalAlignment="Center" Command="{Binding CloseWindowCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}"> Save</Button>
</StackPanel>
public partial class LayOutName : Window
{
public LayOutName()
{
InitializeComponent();
this.DataContext = new LayOutName_VM(); ;
}
}
class LayOutName_VM : ViewModelBase
{
public ActionCommand<Window> CloseWindowCommand { get; private set; }
public LayOutName_VM()
{
this.CloseWindowCommand = new ActionCommand<Window>(this.SaveLayOutName);
}
private string layOutName;
public string LayOutName
{
get
{
return layOutName;
}
set
{
layOutName = value;
RaisePropertyChanged("LayOutName");
}
}
private void SaveLayOutName(Window wind)
{
wind.Close();
}
internal void Show()
{
LayOutName ly = new BrukerApp.LayOutName();
ly.Show();
}
}
最佳答案
您可以调用 ShowDialog()
而不是 Show()
来阻止:
chldWindow.ShowDialog();
string layOutName = chldWindow.LayOutName;
关于c# - 如何从 View 模型中弹出子窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45011498/
我是一名优秀的程序员,十分优秀!