在xaml中将内容设置为xaml文件的实例
本文关键字:xaml 文件 实例 设置 | 更新日期: 2023-09-27 18:08:49
如果我在类后面的代码中有这样的代码:
MyElement.Content = new XamlUserControlFile();
如何在xaml中做同样的事情?
这不是完全清楚,但缺乏一些更多的信息…
如果你用的是…
hostControl.Content = XamlReader.Load(YourXAML);
或LoadComponent
等
我不认为在XAML中有什么"速记"(如果有的话,我想看看:)。
1)您可以使用…
Content="{x:Static my:YourStaticClass.XAMLProperty, Converter=...}"
Content="{Binding Source={x:Static my:YourStaticClass.XAMLProperty}, Converter=...}"
Content="{Binding ViewModelXAMLProperty}, Converter=...}"
绑定到一个属性,它暴露了Content
或内部Control
(它是加载和准备的),你想放在那里。
你需要prepare
它,所以它在你想要的形式(直接XAML不会工作,但某种形式的负载)。
我指定了Converter
,因为这是另一种方式-如果需要,您可以动态转换XAML。
2)您还可以从后面的代码中Load
XAML -并将其放入资源中-或者定义一些在XAML中实例化的包装器。
然后你使用{StaticResource ...}
或DynamicResource等
可能性无穷无尽,你应该多放一些相关的信息
也许你想要的是一个包含usercontrol的XAML的ContentControl ?
对于ContentControl的内容有一些限制,正如你在这里看到的。内容必须是Text(带有ToString()方法)或UIElement的派生对象。
你可以简单地在ContentControl中构建某种UserControl,将xaml与控件的使用分开。
使用MVVM框架,如caliburn。微会让你非常接近MVVM。你只需要从ViewModels中引用ViewModels。你可以完全摆脱代码隐藏。
假设你有一个UserControl,比如
<UserControl x:Class="MyUserControlView"
...>
<Grid Background="Green">
</Grid>
</UserControl>
然后你有一些ViewModel:
public class MyUserControlViewModel : PropertyChangedBase
{
}
然后你可以很容易地在屏幕(视图和视图模型)中为它设置一个绑定它将包含UserControl
public MyUserControlViewModel MyUserControlViewModel { get; set; }
在包含
的类中通过构造函数注入初始化它public ShellViewModel(MyUserControlViewModel viewModel)
{
this.MyUserControlViewModel = viewModel
}
并设置绑定(在包含的XAML中),如:
<ContentControl Name="MyUserControlViewModel " />
这就是你所要做的,就这么简单。
请注意口径。Micro有"约定胜过配置",所以你必须给你的视图命名……View"和你的ViewModels "…ViewModel"。(但是你可以设置你自己的规则)。
并且,在这个例子中非常重要:这份原稿。micro可以并将尽可能地从<x:Name="...">
设置绑定