在xaml中将内容设置为xaml文件的实例

本文关键字:xaml 文件 实例 设置 | 更新日期: 2023-09-27 18:08:49

如果我在类后面的代码中有这样的代码:

MyElement.Content = new XamlUserControlFile();

如何在xaml中做同样的事情?

在xaml中将内容设置为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="...">设置绑定