gpt4 book ai didi

c# - 使用 Prism - WPF 关闭动态添加的选项卡项

转载 作者:太空宇宙 更新时间:2023-11-03 17:48:53 24 4
gpt4 key购买 nike

我正在使用 Prism RegionManager , 用 TabControl 注册不同的 View MainView 内的区域.

主 View .xaml

    <TabControl regions:RegionManager.RegionName="MainViewTabRegion">
<TabControl.ItemTemplate>
<DataTemplate>
<DockPanel Width="Auto">
<Button Command="{Binding DataContext.DataContext.CloseTabCommand, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}"
CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}"
Content="X"
Cursor="Hand"
DockPanel.Dock="Right"
Focusable="False"
FontFamily="Courier"
FontWeight="Bold"
Margin="4,0,0,0"
FontSize="10"
VerticalContentAlignment="Center"
Width="15" Height="15" />

<ContentPresenter Content="{Binding DataContext.DataContext.HeaderText, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}" />
</DockPanel>
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>

在 MainViewViewModel 我正在添加具有相同基类的不同 View 。

MainViewViewModel.cs:
private void AddProjectView() {
var view = _container.Resolve<ProjectSettingsView>();
var dataContext = _container.Resolve<ProjectSettingsViewModel>();
dataContext.HeaderText = "test header txt";
view.DataContext = dataContext;
_regionManager.RegisterViewWithRegion("MainViewTabRegion", () => view);
}

我可以在 View 中添加新的选项卡项。

如何关闭标签项 <TabControl.ItemTemplate>在上面的 XAML 代码中,添加一个带有 CloseCommand 的关闭按钮在 ProjectSettingsViewModel , TabItem 绑定(bind)到它。

ProjectSettingsViewModel.cs
private void OnExecuteCloseCommand(object tabItem) {
//Close this TabItem
}

最佳答案

绑定(bind)CommandParameter Button 的属性(property)到DataContextTabItem :

<Button Command="{Binding DataContext.DataContext.CloseTabCommand, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}"
CommandParameter="{Binding Path=DataContext, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}"
Content="X"
Cursor="Hand"
DockPanel.Dock="Right"
Focusable="False"
FontFamily="Courier"
FontWeight="Bold"
Margin="4,0,0,0"
FontSize="10"
VerticalContentAlignment="Center"
Width="15" Height="15" />

然后,您可以在 View 模型中删除这样的 View :
public class ProjectSettingsViewModel
{
private readonly IRegionManager _regionManager;

public ProjectSettingsViewModel(IRegionManager regionManager)
{
_regionManager = regionManager;
CloseTabCommand = new DelegateCommand<object>(OnExecuteCloseCommand);
}

private void OnExecuteCloseCommand(object tabItem)
{
_regionManager.Regions["MainViewTabRegion"].Remove(tabItem);
}

public DelegateCommand<object> CloseTabCommand { get; }
}

关于c# - 使用 Prism - WPF 关闭动态添加的选项卡项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42652206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com