请帮助以下......
对于自定义弹出对话目的,我希望按照以下方式构建我的WPF应用程序:
Window > Grid > User Control > FlowLayout > Data Template > User Control
...括号代表“包含”
我有一个模型MyType.cs
,我希望在最终用户控件中显示其内容UserControl2.xaml
此模型有 ViewModel ViewMod.cs
, ViewModel {{1}列表 ViewModel }
在以编程方式创建 UserControl1 并设置其数据上下文
后,在ListViewModel.cs
中设置 FlowLayoutControl 的 ItemSource 属性>
据我调试,我的 ViewModels 列表的解析工作正常,但我不确定如何在请求时从 MyType 返回数据绑定的 UserControl2 的数据上下文返回null
...
如果我的要求不清楚,请道歉。这是我第一次尝试WPF,非常感谢任何帮助
答案 0 :(得分:0)
尝试:
public UserControl2() {
InitializeComponent();
Loaded += (sender, args) => {
var obj = (ViewMod)this.DataContext;
if (obj == null || obj.Prop == null)
return;
var d = obj.Prop;
if (d == null)
return;
grd2.Children.Add(new TextBlock { Text = d.Name });
};
}
DataContext
未立即设置。因此,我们使用Loaded
事件并向其添加lambda以执行相应的步骤。
<强>侧面说明:强>
即使这有效,请搜索并查看一些MVVM示例。虽然没有代码隐藏并不是一个真正的MVVM要求,但我认为你可以从代码隐藏中添加一些Grid代码,因为你可以在xaml中完美地完成它。