这是选项卡里有个小叉号,实现关闭功能的前台代码。
- HTML code
<my:TabControl x:Name="tab" Grid.Row="1"> <my:TabControl.Resources> <Style x:Key="style" TargetType="my:TabItem"> <Setter Property="HeaderTemplate"> <Setter.Value> <DataTemplate > <Grid Margin="3"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> </Grid.ColumnDefinitions> <!--<TextBlock x:Name="tb" Text="{Binding HeaderText}" Grid.Column="0" FontSize="11" Margin="5 0 5 0" VerticalAlignment="Center" />--> <Button Content="x" Click="Button_Click" FontSize="5" VerticalAlignment="Center" Grid.Column="1" Width="16" Height="16" Tag="{Binding}"></Button> </Grid> </DataTemplate> </Setter.Value> </Setter> </Style> </my:TabControl.Resources> </my:TabControl>
Button属性里边Tag="{Binding}";binding这么写什么意思,后台代码中实现关闭功能小叉号的单击事件是这么写的:
- C# code
private void Button_Click(object sender, RoutedEventArgs e) { var btn = sender as Button; if (btn != null) { var data = btn.Tag as Data; //source.Remove(hash[data]); this.tab.Items.Remove(hash[data]); } }
private Dictionary<Data, TabItem> hash = new Dictionary<Data, TabItem>();hash是这么定义的;
谁能解释一下,var data = btn.Tag as Data;这句话是怎么实现跟对应的textblock相关联的。
------解决方案--------------------
Binding的使用方法