c# - 如何在 View WPF 中创建 View

标签 c# wpf

我解释一下我的问题,因为我对 UI 设计还很陌生:

我有一个主视图,它在其左侧显示一个 TreeView。选择一个元素后,我想在同一窗口的右侧显示该项目的描述。此描述的设计取决于项目的性质。 因此,我针对不同的可能设计为每个项目类型创建了一个 View 。

现在,当我单击 TreeView 时,我不知道如何在同一窗口的右侧显示相应的 View 。 (我不是在询问捕捉事件,只是在另一个 View 中显示一个 View ,就像我动态绘制一个控件一样)。

这可能吗?如果不是,您会建议采用哪种方法?

非常感谢。

最佳答案

这似乎是数据模板的理想选择。

基本上,创建一个内容展示器并将其内容属性绑定(bind)到 TreeView 的 SelectedItem 属性。现在,在 ContentTemplate 属性中为每个类型创建数据模板(使用 DataType 属性)。

现在,只要您在 TreeView 中选择某些内容,就会使用正确的数据选择正确的数据模板。

就单独的调度程序而言,我不确定,但我也不确定哪种情况需要一个。

可以在此 SO question 中找到更多信息.

示例:

    <ContentPresenter Content="{Binding Path=SelectedItem, ElementName=TreeView}">
        <ContentPresenter.ContentTemplate>
            <DataTemplate DataType="{x:Type Type1}">
                <!-- Bunch of stuff-->
            </DataTemplate>
            <DataTemplate DataType="{x:Type Type2}">
                <!-- Bunch of stuff-->
            </DataTemplate>
        </ContentPresenter.ContentTemplate>
    </ContentPresenter>

关于c# - 如何在 View WPF 中创建 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22108167/

相关文章:

c# - 如何在 wpf 密码框设置一些默认文本?

c# - 如何获取或杀死某个类的所有实例?

c# - FMOD 无缝循环和序列播放

WPF 图标和 Uri

c# - 如何在for循环中增加小时数

.net - 使用 SetValue 添加事件处理程序

c# - DropCreateDatabaseIfModelChanges EF6 导致 System.InvalidOperationException : The model backing the context has changed

c# - 使用 mailMessage 隐藏多个收件人并仅显示收件人电子邮件 ID

资源查找期间的 C# 无限递归

wpf - 如何使用 DataGrid 的工具提示?