【问题标题】:Binding Tab Item to TabControl Dynamically in MVVM Format以 MVVM 格式动态绑定 Tab 项到 TabControl
【发布时间】:2017-10-14 04:13:06
【问题描述】:

如何将选项卡项动态绑定到 TabControl 并在每个选项卡中显示 RichTextBox,我想以 MVVM 格式将一些数据附加到 RichTextBox。

【问题讨论】:

  • WPF 或 UWP 或 Xamarin 表单?

标签: mvvm richtextbox tabcontrol tabitem


【解决方案1】:

嗯...这是您需要的一些通用代码。如果您有任何特殊要求,请告诉我...

XAML....

<Window x:Class="wpfApplication.Views.Test"
   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:GateApplication.Views"
     xmlns:c="clr-namespace:wpfApplication.Commands"
    xmlns:vm="clr-namespace:wpfApplication.ViewModels"
    mc:Ignorable="d"
     Title ="Test" Height="550" Width="825">
    <Window.DataContext>
        <vm:TestVM></vm:TestVM>
    </Window.DataContext>
    <Grid>
<TabControl Width="450" Margin="2,2,2,2" ItemsSource="{Binding Tabs}">
                <TabControl.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Header}"></TextBlock>
                    </DataTemplate>
                </TabControl.ItemTemplate>
                <TabControl.ContentTemplate>
                    <DataTemplate>
                    <RichTextBox>
                        <FlowDocument>
                            <Paragraph>
                                <Run Text="{Binding Content}"></Run>
                            </Paragraph>
                        </FlowDocument>
                        </RichTextBox>
                    </DataTemplate>
                </TabControl.ContentTemplate>
            </TabControl>
    </Grid>
</Window>

而视图模型是...

public class TestVM : ViewModelBase
    {       
        public TestVM()
        {       

            Tabs = new ObservableCollection<TabItem>();
            Tabs.Add(new TabItem { Header = "One", Content = "One's content" });
            Tabs.Add(new TabItem { Header = "Two", Content = "Two's content" });
        }
        public sealed class TabItem
        {
            public string Header { get; set; }
            public string Content { get; set; }
        }
    }

【讨论】:

    猜你喜欢
    • 2018-12-13
    • 1970-01-01
    • 2017-02-16
    • 2018-10-25
    • 2018-11-25
    • 2014-01-27
    • 2013-04-15
    • 1970-01-01
    • 2012-08-23
    相关资源
    最近更新 更多