我需要根据一组相当大的8个相关依赖条件做出决定.
| A | B | C | D | E | F | G | H
-----------+---+---+---+---+---+---+---+---
Decision01 | 0 | 1 | - | 1 | 0 | 1 | - | 1
Decision02 | 1 | 0 | - | 0 | 0 | - | 1 | -
...
Decision11 | 1 | 0 | 1 | 1 | 1 | - | 1 | 1
Run Code Online (Sandbox Code Playgroud)
从A到H的每个条件对于决定可以是真(1),假(0)或不相关( - ).
所以用给定的输入
A B C D E F …
Run Code Online (Sandbox Code Playgroud) 我的应用程序中有1 ... n个tabcontrols,具有以下XAML设置:
<TabControl Name="ordersTabControl" ItemsSource="{Binding CoilItems}">
<TabControl.ItemTemplate>
<DataTemplate DataType="models:Coil">
<StackPanel>
<TextBlock Text="{Binding CoilCode, StringFormat='Coil: {0}'}" />
<TextBlock Text="{Binding ArticleCode, StringFormat='Auftrag: {0}'}" />
<TextBlock Text="{Binding RestWeight, StringFormat='Restgewicht: {0} kg'}" />
</StackPanel>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
[...]
</TabControl.ContentTemplate>
</TabControl>
Run Code Online (Sandbox Code Playgroud)
打开的选项卡数量在运行时更改.现在我想在每个标签中显示索引(即第一个标签显示"订单1",第二个"订单2"等等)以及每个标题中已有的信息.
使用DataTemplate时AFAIK我无法通过代码隐藏访问tab-properties,所以在XAML中是否有任何方法可以在tabheader中绑定文本块以显示tabcontrol中该特定选项卡的索引?
我认为应该可以使用RelativeSource和FindAncestors吗?唉,我真的找不到关于这些设置的任何明确的教程(我2天前才开始使用WPF).
设置:我有一个带有 0...n 个选项卡的选项卡控件,每个选项卡都绑定到一个类:
class MyTabItem
{
string Text {get; set;}
int ID {get; set;}
ISet<MyTabContent> Contents {get; set;}
}
Class MyTabContent
{
int ID {get; set;}
string Subtext {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
每个 tabitem 类都有许多 tabcontent 类。(整个事情都是通过 NHibernate 获取的)。
我尝试了很多方法将 MyTabItem 的内容绑定到每个 tabcontrol 项的标题,并将 MyTabContent 的内容绑定到每个 tabcontrol 项内容中的数据网格。
我可以显示选项卡中的所有内容,但每当我更改绑定类中的属性时,UI 都不会更新。我尝试调用 InvalidateVisual,尝试调度 Render 事件,尝试对绑定进行 UpdateTarget 和 UpdateSource(最后 2 个抛出异常)。我已经在我的视图模型中实现了 INotifyPropertyChanged,甚至尝试手动使用 OnPropertyChanged("MyTabItem") 但无济于事。
我真的不明白为什么当我更改绑定类中的属性时我的 tabcontrol 内容不会更新。我尝试了两种不同的绑定策略,两种策略都可以显示内容,但当内容更改时都不会更新。
我的 XAML 设置是:
<TabControl>
<TabControl.ItemTemplate>
<DataTemplate DataType="models:MyTabItem">
<TextBlock Text="{Binding Text}" />
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate DataType="models:MyTabItem">
<DataGrid …
Run Code Online (Sandbox Code Playgroud)