我想创建一个Tab控件,可以容纳多个用户控件。
0
xaml仅适用于1个标签项,由ShellService.IsSchedulerEnabled控制,内容为ShellService.LazySchedulerView.Value。
我的问题是,如果我想创建一个新的TabItem,我必须在xaml中创建一个新的TabItem标记。
如何创建动态选项卡控件以保存多个选项卡项而不在ContentControl中指定“值”。
number
答案 0 :(得分:1)
您可以Style
使用此TabItem
。我为你创造了一些例子。您应该将Bindings
更改为您自己的ObservableCollection
。您应该创建ShellService
个TabControl
并将其绑定到<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;