【问题标题】:MVVM select new Tab from TabControlMVVM 从 TabControl 中选择新选项卡
【发布时间】:2017-04-22 07:57:19
【问题描述】:

创建后我想从选项卡控件中选择选项卡。

XAML:

<TabControl SelectedIndex="{Binding SelectedTabIndex}" Name="Items">
      <TabControl.Resources>
      </TabControl.Resources>
</TabControl>

主视图模型:

public int SelectedTabIndex
{
   get
   {
      return Items.Count - 1;
   }
   set { ; }
}
public void AddTab()
{
   var chart = new ChartViewModel(this.eventAggregator, this.windowManager);
   NotifyOfPropertyChange(() => SelectedTabIndex);
}

ChartViewModel是继承自Caliburn.Micro.Screen的类,MainViewModel继承自Caliburn.Micro.Conductor&lt;Caliburn.Micro.Screen&gt;.Collection.OneActive

选项卡已正确创建,但之后未选中。

【问题讨论】:

  • 绑定到 SelectedIndex(或类似的)是 wpf 中的一种代码味道。使用 ItemsSource/SelectedItem 来管理选择总是更容易和更清晰。此外,有关如何以 MVVM 方式使用 TabControl 的更简洁示例,请参阅我的答案stackoverflow.com/a/5651542/1228

标签: c# wpf mvvm caliburn.micro


【解决方案1】:

将您的 xaml 代码更改为类似的内容,

<TabControl SelectedIndex="{Binding SelectedTabIndex,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Name="Items">
      <TabControl.Resources>
      </TabControl.Resources>
</TabControl>

【讨论】:

  • 我必须将set 属性添加到SelectedTabIndex,但现在它可以工作了:) 谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-27
  • 1970-01-01
  • 2014-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-20
相关资源
最近更新 更多