C# 绑定选项卡项模板
我有一个TabControl,里面有一个TabItems列表,我想使用不同的源代码模板。 假设2个TabItems将绑定到一个对象,2个TabItes可能绑定到一个observetecollection 为此,我提出以下建议: 我创建了以下资源:C# 绑定选项卡项模板,c#,wpf,templates,binding,C#,Wpf,Templates,Binding,我有一个TabControl,里面有一个TabItems列表,我想使用不同的源代码模板。 假设2个TabItems将绑定到一个对象,2个TabItes可能绑定到一个observetecollection 为此,我提出以下建议: 我创建了以下资源: <DataTemplate x:Key="TemplateType1" > <StackPanel> <Grid Background="{StaticResource WindowBackgrou
<DataTemplate x:Key="TemplateType1" >
<StackPanel>
<Grid Background="{StaticResource WindowBackgroundColor}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<Grid Margin="10,10,20,10">
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<RadioButton Visibility="{Binding BottomChoice, Converter={StaticResource BoolToVisConverter}}"
Content="True option"
GroupName="radioGroup1"
IsChecked="{Binding Bottom,
Converter={StaticResource InverseBoolRadioConverter}}" />
<RadioButton Grid.Row="1" Visibility="{Binding BottomChoice, Converter={StaticResource BoolToVisConverter}}"
Content="False option"
GroupName="radioGroup1"
IsChecked="{Binding Bottom}" />
</Grid>
<Button Grid.Row="1" Width="200">
<Image Source="..\img\image_about.png"/>
</Button>
<Grid Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="60"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="60"/>
</Grid.ColumnDefinitions>
<Button Content="{x:Static p:Resources.Delete}" Click="DeleteMacro_Click" Margin="3" >
<Button.Style>
<Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
<Style.Triggers>
<DataTrigger Binding="{Binding Name, Mode=OneWay}" Value="">
<Setter Property="Button.IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
<Button Content="{x:Static p:Resources.Change}" Grid.Column="2" Click="EditMacroLeft_Click" Margin="3">
<Button.Style>
<Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
<Style.Triggers>
<DataTrigger Binding="{Binding Name, Mode=OneWay}" Value="">
<Setter Property="Button.Content" Value="{x:Static p:Resources.Add}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</Grid>
</Grid>
<Grid Margin="20,10,10,10" Grid.Column="1">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
</Grid>
</Grid>
</StackPanel>
</DataTemplate>
然后我的标签是这样的:
<TabItem Header="{x:Static p:Resources.Type1_Right}" Style="{StaticResource VerticalTabItem}">
<TabItem.ContentTemplate>
<DataTemplate>
<Grid>
<ContentPresenter ContentSource="{Binding MacroRight}" ContentTemplate="{StaticResource TemplateType1}"/>
</Grid>
</DataTemplate>
</TabItem.ContentTemplate>
</TabItem>
我正在尝试将我的模板绑定到MacroRight
,但绑定不起作用
也可以看到有一个DataTemplateSelector
的可能性,但我看不到关于如何使用它的具体示例?文档说明:
仅当ContentPresenter位于模板中时,才应使用此属性。当模板包含ContentSource设置为“Abc”的ContentPresenter时,ContentPresenter的Content、ContentTemplate和ContentTemplateSelector属性将分别自动别名为Abc、ABCTTemplate和ABCTTemplateSelector
应将其设置为常量(非绑定),并让其创建内容绑定:
<ContentPresenter ContentSource="MacroRight" ...
您是否尝试绑定内容:ContentPresenter Content=“{Binding MacroRight}”
?@Ash刚刚尝试将ContentSource
替换为Content
,但没有更改任何内容。精度:使数据模板对我来说是新的,所以我不确定我做它的正确方法?我看到也有ControlTemplates,所以我可以用它代替DataTemplate(因为我将有两个不同的模板),DataTemplate很好。您是否设置了TabItem.Content?您的意思是在@ASh上有其他想法?在最坏的情况下,我将不使用模板(它们只重复两次),但也最好掌握它们,因为所有XAML人员都有点我的弱点^ ^'
<ContentPresenter Content="{Binding MacroRight}" ...