动态标签控件,可以保存用户控件

时间:2015-12-01 08:32:07

标签: c# wpf tabcontrol

我想创建一个Tab控件,可以容纳多个用户控件。

0

xaml仅适用于1个标签项,由ShellService.IsSchedulerEnabled控制,内容为ShellService.LazySchedulerView.Value。

我的问题是,如果我想创建一个新的TabItem,我必须在xaml中创建一个新的TabItem标记。

如何创建动态选项卡控件以保存多个选项卡项而不在ContentControl中指定“值”。

number

1 个答案:

答案 0 :(得分:1)

您可以Style使用此TabItem。我为你创造了一些例子。您应该将Bindings更改为您自己的ObservableCollection。您应该创建ShellServiceTabControl并将其绑定到<TabControl ItemsSource="{Binding Objects}"> <TabControl.Resources> <Style TargetType="TabItem" x:Key="{x:Type TabItem}"> <Setter Property="Header" Value="{Binding Header}"></Setter> <Style.Triggers> <Trigger Property="IsVisible" Value="True"> <Setter Property="Content" Value="{Binding Text}"/> </Trigger> </Style.Triggers> </Style> </TabControl.Resources> </TabControl> 。我希望这会有所帮助。

public class OwnObject : ViewModelBase
{
    private string _text;

    public string Text
    {
        get { return _text; }
        set { _text = value; NotifyPropertyChanged( "Text" ); }
    }

    #region INotifyPropertyChanged Members
    public event PropertyChangedEventHandler PropertyChanged;
    #endregion
    protected void NotifyPropertyChanged( String info )
    {
        if ( PropertyChanged != null )
        {
            PropertyChanged( this, new PropertyChangedEventArgs( info ) );
        }
    }
}

<强>更新

ViewModel示例

TabControl

我将这些对象绑定到private ObservableCollection<OwnObject> _objects = new ObservableCollection<OwnObject>(); public ObservableCollection<OwnObject> Objects { get { return _objects; } set { _objects = value; NotifyPropertyChanged( "Objects" ); } }

CREATE OR REPLACE FUNCTION test2()
   RETURNS trigger AS
   $BODY$
   DECLARE
       record DOUBLE PRECISION;
   BEGIN
       SELECT value into record from sensorlastdatalog where sensor_id = 1;
       record = record / 100000;
       INSERT INTO kpihistdatalog(id, kpi_id, controlelement_id, logdate, valuedate, value)
          VALUES (nextval('kpihistdatalog_id_seq'), 1, 0, now(), now(), record);
   RETURN NULL;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;