gpt4 book ai didi

c# - 如何从代码隐藏访问用于填充 XAML 类的 DataContext 的属性/方法?

转载 作者:行者123 更新时间:2023-11-30 19:44:53 24 4
gpt4 key购买 nike

我想在后面的代码中使用 SaveFileDialog 来使用 ViewModel 中包含的数据编写文件。我正在使用的 XAML 类由在父类的列表框中所做的选择填充:

    <Views:ChildView DataContext="{Binding Path=SelectedItem, ElementName=childrenListbox}"></Views:ChildView >

然后,在 ChildView XAML 文件中,我可以按预期自由访问 ChildViewModel 的属性/方法。但是,我不知道如何从后面的代码访问它们。我有一个“保存文件”按钮

    <Button Content="Save File" Click="Button_Click"></Button>

其事件在后面的代码中处理:

    private void Button_Click(object sender, RoutedEventArgs e)
{
Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
dlg.FileName = "Document";
dlg.DefaultExt = ".txt";
dlg.Filter = "Text documents (.txt)|*.txt";

Nullable<bool> result = dlg.ShowDialog();

if (result == true)
{
string filename = dlg.FileName;
//Here I would like to call the SaveFile function in ChildViewModel
}
}

我已尝试查看所有可用属性,但找不到访问我正在使用的 ChildViewModel 实例的方法。这个问题可能有一个简单的解决方案,但我不熟悉使用代码隐藏,因为我正在创建我的第一个公会并且我一直在使用 MVVM 方法。我将非常感谢任何帮助我找到可行解决方案的答案。另外,如果有办法避免它并通过仅使用 XAML 获得 SaveFileDialog(然后我可以轻松地在 ModelView 中保存文件),请随时批评我使用 MVVM 背后的代码。

最佳答案

不确定您在哪里设置 ViewModel,因为您没有显示它的代码,但通常它位于根元素的 DataContext 属性上。所以你可以像那样转换它。

var viewModel = (ChildViewModel)this.DataContext;

关于c# - 如何从代码隐藏访问用于填充 XAML 类的 DataContext 的属性/方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11655440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com