【发布时间】:2020-01-20 09:15:46
【问题描述】:
我为 TabControl 动态创建了 5 种类型的 TabItem。例如:
<Style x:Key="StyleCrcs" TargetType="{x:Type TabItem}">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="AllowDrop" Value="True"/>
<EventSetter Event="PreviewMouseMove" Handler="TabItem_PreviewMouseMove"/>
<EventSetter Event="Drop" Handler="TabItem_Drop"/>
<Setter Property="ContentTemplate" >
<Setter.Value>
<DataTemplate>
<Grid>
<TextBlock TextWrapping="Wrap" Text="Adres(hex)" FontSize="15" Margin="10,10,396,444"/>
<ComboBox x:Name="AddressCrcs" HorizontalAlignment="Left" Margin="134,11,0,0" VerticalAlignment="Top" Width="120">
<ComboBoxItem>60</ComboBoxItem>
<ComboBoxItem>61</ComboBoxItem>
<ComboBoxItem>62</ComboBoxItem>
<ComboBoxItem>63</ComboBoxItem>
<ComboBoxItem>64</ComboBoxItem>
<ComboBoxItem>65</ComboBoxItem>
<ComboBoxItem>66</ComboBoxItem>
<ComboBoxItem>67</ComboBoxItem>
</ComboBox>
<TextBlock x:Name="Tranz1" TextWrapping="Wrap" Text="Tranzystor 1:" FontSize="15" Margin="10,126,396,337"/>
<TextBlock x:Name="Tranz2" TextWrapping="Wrap" Text="Tranzystor 2:" FontSize="15" Margin="10,156,396,307"/>
</Grid>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
每个都有特定的结构。 所有这些类型都从 ICards 继承。
interface ICards
{
string Name { get; set; }
string Address { get; set; }
}
class CardCrcs : ICards
{
public string Name { get; set; }
public string Address { get; set; }
public string Tranzystor1 { get; set; }
public string Tranzystor2 { get; set; }
}
当我创建 TabItem 时,我将对象添加到列表中。
每个 TabItem 都有文本块,当我更改 TabItem 时,我想为此文本块设置文本。
我该怎么做?
<TabControl x:Name="TabCards" Grid.Column="1" SelectionChanged="TabCards_SelectionChanged">
var list = new List<ICards>()
var element = (CardCrcs)list[0];
TabCards.SelectedItem.Tranz1.Text = element.Tranzystor1;
TabCards.SelectedItem.Tranz1.Text不工作。如何替换这个来做到这一点?
编辑:
当我这样做时,我可以获取标题,但不能获取文本块名称。
var item = (TabItem)TabCards.SelectedItem;
【问题讨论】: