C# 设置数据绑定选项卡项标题的动画
我有一个数据绑定选项卡控件,其中包含C# 设置数据绑定选项卡项标题的动画,c#,.net,wpf,animation,.net-4.0,C#,.net,Wpf,Animation,.net 4.0,我有一个数据绑定选项卡控件,其中包含n个选项卡。我有选项卡控件的标题和内容模板。标题模板包含带有图像和TextBlock的stackpanel,内容模板包含WebBrowser控件 我被要求做的是在浏览器导航时为图像设置动画(主要是淡入/淡出)。我可以在代码隐藏中创建和执行故事板,但我不知道如何基于正在导航的浏览器访问标题模板。有办法做到这一点吗?或者可能是通过xaml中的事件触发器实现这一点的方法 编辑:添加了XAML代码。除了“tabitem”类和集合片段以及我用来绑定到我添加的“webbr
n
个选项卡。我有选项卡控件的标题和内容模板。标题模板包含带有图像和TextBlock
的stackpanel,内容模板包含WebBrowser
控件
我被要求做的是在浏览器导航时为图像设置动画(主要是淡入/淡出)。我可以在代码隐藏中创建和执行故事板,但我不知道如何基于正在导航的浏览器访问标题模板。有办法做到这一点吗?或者可能是通过xaml中的事件触发器实现这一点的方法
编辑:添加了XAML代码。除了“tabitem”类和集合片段以及我用来绑定到我添加的“webbrowser”控件的源属性的“webbrowser”实用程序类之外,现在还没有真正的代码。我还没有创建“故事板”,因为我不确定如何进行。“HeaderTemplate”数据模板中的图像就是我需要设置动画的图像。我刚刚在集合中的一些随机选项卡项中找到了这些信息,这些信息通常是从数据库中获取的
XAML:
<Window...>
<Window.Resources>
<src:ImageSourceConverter x:Key="ImageSourceConverter"/>
<ObjectDataProvider x:Key="TabListResource" ObjectType="{x:Type src:TabList}" />
<DataTemplate x:Key="HeaderTemplate">
<StackPanel Orientation="Horizontal" >
<Image Source="{Binding Path=ImageSource, Converter={StaticResource ImageSourceConverter}}" Height="16" Width="16" x:Name="imgHeader" />
<TextBlock Text="{Binding Path=Header}" Padding="5,0,0,0" x:Name="Header" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="ContentTemplate">
<WebBrowser src:WebBrowserUtility.BindableSource="{Binding Content}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Disabled"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
Name="webBrowser" Navigated="webBrowser_Navigated" Navigating="webBrowser_Navigating"/>
</DataTemplate>
</Window.Resources>
<DockPanel Name="dockMain">
<TabControl ItemsSource="{Binding Source={StaticResource TabListResource}}"
ItemTemplate="{StaticResource HeaderTemplate}"
ContentTemplate="{StaticResource ContentTemplate}">
<TabControl.Template>
<ControlTemplate TargetType="TabControl">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Hidden" >
<TabPanel x:Name="HeaderPanel"
Panel.ZIndex ="1"
KeyboardNavigation.TabIndex="1"
Grid.Column="0"
Grid.Row="0"
Margin="2,2,2,0"
IsItemsHost="true" />
</ScrollViewer>
<ContentPresenter x:Name="PART_SelectedContentHost"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
Margin="{TemplateBinding Padding}"
ContentSource="SelectedContent" Grid.Row="1"/>
</Grid>
</ControlTemplate>
</TabControl.Template>
</TabControl>
</DockPanel>
</Window>
class TabItemData
{
private string _header;
private string _content;
private string _imageSource;
public TabItemData(string header, string content, string imageSource)
{
_header = header;
_content = content;
_imageSource = String.Format(@"../Images/{0}",imageSource);
}
public string Header
{
get { return _header; }
}
public string Content
{
get { return _content; }
}
public string ImageSource
{
get { return _imageSource; }
}
}
class TabList : ObservableCollection<TabItemData>
{
public TabList() : base()
{
Add(new TabItemData("Header 1", "url1", "img1.png"));
Add(new TabItemData("Header 2", "url2", "img2.png"));
Add(new TabItemData("Header 3", "url3", "img3.png"));
}
}
选项卡项目集合:
<Window...>
<Window.Resources>
<src:ImageSourceConverter x:Key="ImageSourceConverter"/>
<ObjectDataProvider x:Key="TabListResource" ObjectType="{x:Type src:TabList}" />
<DataTemplate x:Key="HeaderTemplate">
<StackPanel Orientation="Horizontal" >
<Image Source="{Binding Path=ImageSource, Converter={StaticResource ImageSourceConverter}}" Height="16" Width="16" x:Name="imgHeader" />
<TextBlock Text="{Binding Path=Header}" Padding="5,0,0,0" x:Name="Header" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="ContentTemplate">
<WebBrowser src:WebBrowserUtility.BindableSource="{Binding Content}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Disabled"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
Name="webBrowser" Navigated="webBrowser_Navigated" Navigating="webBrowser_Navigating"/>
</DataTemplate>
</Window.Resources>
<DockPanel Name="dockMain">
<TabControl ItemsSource="{Binding Source={StaticResource TabListResource}}"
ItemTemplate="{StaticResource HeaderTemplate}"
ContentTemplate="{StaticResource ContentTemplate}">
<TabControl.Template>
<ControlTemplate TargetType="TabControl">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Hidden" >
<TabPanel x:Name="HeaderPanel"
Panel.ZIndex ="1"
KeyboardNavigation.TabIndex="1"
Grid.Column="0"
Grid.Row="0"
Margin="2,2,2,0"
IsItemsHost="true" />
</ScrollViewer>
<ContentPresenter x:Name="PART_SelectedContentHost"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
Margin="{TemplateBinding Padding}"
ContentSource="SelectedContent" Grid.Row="1"/>
</Grid>
</ControlTemplate>
</TabControl.Template>
</TabControl>
</DockPanel>
</Window>
class TabItemData
{
private string _header;
private string _content;
private string _imageSource;
public TabItemData(string header, string content, string imageSource)
{
_header = header;
_content = content;
_imageSource = String.Format(@"../Images/{0}",imageSource);
}
public string Header
{
get { return _header; }
}
public string Content
{
get { return _content; }
}
public string ImageSource
{
get { return _imageSource; }
}
}
class TabList : ObservableCollection<TabItemData>
{
public TabList() : base()
{
Add(new TabItemData("Header 1", "url1", "img1.png"));
Add(new TabItemData("Header 2", "url2", "img2.png"));
Add(new TabItemData("Header 3", "url3", "img3.png"));
}
}
请发布您当前的代码(XAML和代码隐藏)。刚刚发布。很抱歉,我发帖时手头没有代码