Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当另一个选项卡禁用时,如何使用XAML触发器更改TabControl索引?_C#_Wpf_Data Binding_Setter_Datatrigger - Fatal编程技术网

C# 当另一个选项卡禁用时,如何使用XAML触发器更改TabControl索引?

C# 当另一个选项卡禁用时,如何使用XAML触发器更改TabControl索引?,c#,wpf,data-binding,setter,datatrigger,C#,Wpf,Data Binding,Setter,Datatrigger,我在WPF应用程序中有一个TabControl,它有两个选项卡。有一个名为Voices的集合,您可以在第6行看到它,即Path=GameMaster.Voices.Count。我试图实现的是,当集合为空时,第二个选项卡将禁用,我已经成功地做到了这一点。然后,我希望TabControl的SelectedIndex设置为0。这不仅禁用了第二个选项卡,还强制用户返回第一个选项卡。使用下面的代码,结果在某种程度上起作用,但是,当我将第一项添加到集合中时,选项卡索引似乎设置为-1 以下是TabContro

我在WPF应用程序中有一个TabControl,它有两个选项卡。有一个名为
Voices
的集合,您可以在第6行看到它,即
Path=GameMaster.Voices.Count
。我试图实现的是,当集合为空时,第二个选项卡将禁用,我已经成功地做到了这一点。然后,我希望TabControl的SelectedIndex设置为0。这不仅禁用了第二个选项卡,还强制用户返回第一个选项卡。使用下面的代码,结果在某种程度上起作用,但是,当我将第一项添加到集合中时,选项卡索引似乎设置为-1

以下是TabControl在应用程序启动时的屏幕截图,此时集合中没有对象:

但是,在添加项目时,会发生以下情况:

以下是我的XAML代码:


这是我正在使用的转换器:

内部类计数大于零转换器:IValueConverter
{
公共对象转换(对象值、类型targetType、对象参数、CultureInfo区域性)
{
var count=System.Convert.ToInt32(值);
返回计数>0;
}
公共对象转换回(对象值、类型targetType、对象参数、CultureInfo区域性)
{
抛出新的NotImplementedException();
}
}

我已经试着了解发生了什么,但是我还没有找到一个合适的解决方案,任何帮助都将不胜感激。谢谢。

在这里回答,然而,我并不是100%地理解为什么这解决了我的问题。所以,如果有人能让我知道到底发生了什么,那将是我知识的巨大财富

我添加了以下代码行:


...

-1是选项卡索引的默认值,表示没有选定的选项卡。将第一项添加到集合时,选项卡索引似乎设置为-1。似乎,当您将项添加到集合中时,选项卡项没有更新