希望你们都很好.
我正在使用Caliburn.Micro和Telerik的WPF控件来构建选项卡式界面.使用RadTabControl我有以下代码;
<telerik:RadTabControl x:Name="Items" Grid.Row="1" TabStripPlacement="Bottom">
<telerik:RadTabControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding DisplayIcon}" Width="16" Height="16"/>
<TextBlock Text="{Binding DisplayName}"/>
</StackPanel>
</DataTemplate>
</telerik:RadTabControl.ItemTemplate>
</telerik:RadTabControl>
Run Code Online (Sandbox Code Playgroud)
该选项卡具有正确的标题,但内容为".../MyViewModel"(省略号替换完整路径),而不是应显示的屏幕.
如果我<telerik:RadTabControl...用<TabControl...这个替换所有的工作按预期.
我错过了什么?
我有一个通用的 DataTemplate NameTemplate,我在其他 DataTemplate 中使用它。我故意未定义FontSize和FontFamily属性,以便使用 DataTemplate 可以设置 TextElement 附加属性并让NameTemplate的 TextBlock 继承这些属性。
问题是NameTemplate中的 TextBlock没有继承那些 TextElement 附加属性。请参阅下面的代码和我对问题的有效解决方案。
我发帖询问是否有更好的方法来解决这个问题,也许可以解释为什么我的解决方案有效?此外,在这篇文章的末尾是一个关于我在这个解决方案中遇到的另一个问题的问题。
这是NameTemplate;
<DataTemplate x:Key="NameTemplate" DataType="{x:Type common:Contact}">
<TextBlock>
<Run Text="{Binding Title, Mode=OneWay}"/>
<Run Text="{Binding FirstName, Mode=OneWay}"/>
<Run Text="{Binding MiddleInitial, Mode=OneWay, TargetNullValue='', FallbackValue='', StringFormat='{}{0}. '}"/><Run Text="{Binding LastName, Mode=OneWay}"/>
</TextBlock>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
这是一个使用 DataTemplate 的示例;
<DataTemplate DataType="{x:Type common:Contact}">
<StackPanel>
<ContentPresenter Content="{Binding}" ContentTemplate="{StaticResource NameTemplate}" Style="{StaticResource SubHeadingTextElementStyle}"/>
<!-- Other Template Stuff -->
</StackPanel>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
样式SubHeadingTextElementStyle看起来像这样;
<Style x:Key="SubHeadingTextElementStyle" BasedOn="{StaticResource …Run Code Online (Sandbox Code Playgroud)